2022年1月現在、MySQLをインストールすると、デフォルト設定ではMySQLプロンプト上で日本語入力ができないようになっています。
たとえば以下のように日本語を入力してみましょう。
日本語をEnterキーで確定した時点で消えてしまいます。
ここではMySQLプロンプト上で日本語入力を可能にする手順をまとめます。
ここで解説する手順はLinuxの知識が必要になります。MySQLで日本語を扱うには、ここで紹介する方法の他にもphpMyAdminのようなGUIツールを使うこともできます。どのような方法で日本語入力を解決するかは、メンターに相談するなどして作業を進めてください。またここで実行するサンプルコードは手入力すると間違いやすいので、コピーアンドペーストで実行してください。
日本語入力ができない原因
2022.01月現在、MySQL(MariaDB)が内部で利用している入出力ライブラリ( libedit
)の設定に問題があるようです。以下の2つの手順で原因を解消できます。
libedit
ライブラリをダウンロードしてインストールmysql
コマンドの起動時にライブラリを指定する
1. libedit
ライブラリをダウンロードしてインストール
インターネット上から libedit
ライブラリをダウンロードしてインストールします。
wget http://thrysoee.dk/editline/libedit-20180525-3.1.tar.gz
tar zxvf libedit-20180525-3.1.tar.gz
cd libedit-20180525-3.1
sudo yum install gcc ncurses-devel
./configure --prefix=/usr/local --libdir=/usr/local/lib64
make
sudo make install
上記の一連のコードをコピーしてターミナルに貼り付けて実行します。
上記の一連のコマンドを実行した後、以下のように ls -l /usr/local/lib64/
と入力してインストールを確認します。
$ ls -l /usr/local/lib64/
total 2080
-rw-r--r-- 1 root root 1362568 Jan 27 07:13 libedit.a
-rwxr-xr-x 1 root root 930 Jan 27 07:13 libedit.la
lrwxrwxrwx 1 root root 17 Jan 27 07:13 libedit.so -> libedit.so.0.0.58
lrwxrwxrwx 1 root root 17 Jan 27 07:13 libedit.so.0 -> libedit.so.0.0.58
-rwxr-xr-x 1 root root 761168 Jan 27 07:13 libedit.so.0.0.58
drwxr-xr-x 2 root root 24 Jan 27 07:13 pkgconfig
drwxr-xr-x 3 root root 27 Jan 4 17:03 python3.7
上記のように libedit
という名前のファイルが生成されていれば完了です。
2. mysql
コマンドの起動時にライブラリを指定する
続いてMySQLにアクセスしてみましょう。さきほどインストールした libedit
ライブラリを指定してMySQLにアクセスするには、以下のようにコマンドを入力します。
$ LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH /usr/bin/mysql
このコマンドは長いので入力しないでください。
しかし、MySQLを起動する度にこのような入力を行うのは手間になります。そこで上記のコマンドに名前を付けて(エイリアス)実行できるようにします。
$ alias mysql="LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH /usr/bin/mysql"
ここでは上記のコマンドをコピーして実行してください。ただし先頭の$マークはコピーに不要です。
alias
コマンドについて補足しておきましょう。alias
コマンドは以下のようにコマンドに名前(別名=エイリアス)をつけます。
alias 名前="コマンド"
さきほどの場合、mysql
という名前に "LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH /usr/bin/mysql"
というコマンドを割り当てています。これによってターミナルで mysql
と入力すると LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH /usr/bin/mysql
というコマンドが実行されることになります。
続いて、正しくエイリアスを登録できたか確認してみましょう。ターミナルで alias
と入力します。
$ alias
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mysql='LD_LIBRARY_PATH=/usr/local/lib64: /usr/bin/mysql'
alias pip='pip3'
alias python='python3'
alias rvm-restart='rvm_reload_flag=1 source '\''/home/ec2-user/.rvm/scripts/rvm'\'''
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
上記のように出力に mysql='LD_LIBRARY_PATH=/usr/local/lib64: /usr/bin/mysql'
が含まれていれば大丈夫です。
それではMySQLを起動して日本語を入力してみましょう。まずはMySQLにアクセスします。
$ mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.2.38-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
次に eldb
に接続して日本語を入力してみましょう。
MariaDB [(none)]> use
MariaDB [(none)]> use eldb;
Database changed
MariaDB [eldb]> select 'あいうえお';
+-----------------+
| あいうえお |
+-----------------+
| あいうえお |
+-----------------+
1 row in set (0.00 sec)
MariaDB [eldb]>
上記のように日本語を処理できれば設定変更は完了です。
参考:エイリアスを .bashrc
に保存する
さきほど入力した alias
コマンドはターミナルを開き直したり、Cloud9を終了したりするとエイリアスの設定は消去されてしまいます。そこで継続して使いたいエイリアスの定義はホームフォルダにある .bashrc
ファイルに記述しておくようにします。
Linuxではホームフォルダ下の
.bashrc
ファイルに記述したスクリプトはターミナルの起動時に自動的に実行されるようになっています。
vi
エディタなどを使って .bashrc
ファイルを直接編集しても良いのですが、ここでは echo
コマンドで .bashrc
ファイルにコードを追記してみましょう。以下のコードをコピーしてターミナルに貼り付けて実行します。
$ echo 'alias mysql="LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH /usr/bin/mysql"' >> ~/.bashrc
先頭の$マークはコピー不要です。
続いて cat
コマンドで ~/.bashrc
ファイルを確認してみましょう。
$ cat ~/.bashrc
...省略
# Add RVM to PATH for scripting. Make sure this is the last PATH variable change.
export PATH="$PATH:$HOME/.rvm/bin"
alias mysql="LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH /usr/bin/mysql"
上記のように最終行に alias
コマンドが追加されていれば完了です。以降はターミナルを起動(開き直すなど)する度に ~/.bashrc
ファイルのコードが実行されるので、mysql
と入力するだけで、ライブラリの指定が完了するようになります。