2022年1月現在、MySQLをインストールすると、デフォルト設定ではMySQLプロンプト上で日本語入力ができないようになっています。

たとえば以下のように日本語を入力してみましょう。

日本語をEnterキーで確定した時点で消えてしまいます。

ここではMySQLプロンプト上で日本語入力を可能にする手順をまとめます。

ここで解説する手順はLinuxの知識が必要になります。MySQLで日本語を扱うには、ここで紹介する方法の他にもphpMyAdminのようなGUIツールを使うこともできます。どのような方法で日本語入力を解決するかは、メンターに相談するなどして作業を進めてください。またここで実行するサンプルコードは手入力すると間違いやすいので、コピーアンドペーストで実行してください。

日本語入力ができない原因

2022.01月現在、MySQL(MariaDB)が内部で利用している入出力ライブラリ( libedit )の設定に問題があるようです。以下の2つの手順で原因を解消できます。

  1. libedit ライブラリをダウンロードしてインストール
  2. 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 と入力するだけで、ライブラリの指定が完了するようになります。