このタイトルのような記事は多く存在するのですが,Ubuntuでの例が少ないのか,
一筋縄では行かなかったので記事にすることにしました.
環境
Version | |
---|---|
ホストOS | Ubuntu Server 20.04.1 LTS |
ホスト側MySQL | Ver 8.0.22 |
クライアント側MySQL(MariaDB) | 10.3.23-MariaDB |
今回クライアント側はRaspberry Pi
を使用していたので,mariaDB
を使用しています(raspbianにはmysqlが入らなかった?).
MySQLとmariaDBはほぼ互換なので,MySQL8系同士でやるなら問題ないと思います.
しかし,MariaDBの10.3はMySQLの5.7に相当するそうなんですが,
5系から8系にログインする際には問題が発生するのでそれについても以下で解説します.
ホスト側とクライアント側にそれぞれMySQLはインストール済みとします.
[ホスト側] 外部公開の設定
デフォルトではlocalhostしか接続できない設定になっているので,公開範囲を設定します.
/etc/mysql/mysql.conf.d/mysqld.cnf
にアクセスして,bind-address
のところを以下のようにします.
$ sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 0.0.0.0
default_authentication_plugin=mysql_native_password #クライアント側が5系の時にはこの行も追加.8系の時は不要.
設定が終わったらMySQLを再起動します.
$ /etc/init.d/mysql restart
[ホスト側] 接続用のユーザを作成
MySQLにログインし,以下のコマンドでユーザを作成します.
ここではadmin
がユーザ名,@以降の'%'
は任意のIPアドレスを意味します.
CREATE USER 'admin'@'%' IDENTIFIED BY 'P@ssw0rd';
GRANT ALL ON *.* TO 'admin'@'%';
以下のコマンドで確認しましょう.
select user,host from mysql.user;
次のようになっていたらOKです.
mysql> select user,host from mysql.user;
+------------------+-----------+
| user | host |
+------------------+-----------+
| admin | % |
| debian-sys-maint | localhost |
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+------------------+-----------+
リモート側からログイン
リモート側からログインしてみましょう.
$ mysql -u admin -h [IPアドレス] -p
リモート側がMySQL8系ならこれでログインできると思います.
MySQL5系から8系にログインする
もしリモート側が5系の場合,以下のようなエラーがでると思います.
ERROR 1045 (28000): Plugin caching_sha2_password could not be loaded: /usr/lib/arm-linux-gnueabihf/mariadb19/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory
これは認証プラグインが8系で変更されてしまったためです.
今回はホスト側の認証プラグインを5系で使用されていたものに変更する形で解決したいと思います.
MySQLの設定に次を加えます.
(上の設定ではこちらを加えた状態で記載しました)
$ sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
default_authentication_plugin=mysql_native_password
設定が終わったらMySQLを再起動します.
$ /etc/init.d/mysql restart
これで先程と同じようにユーザを作成することで,認証プラグインが変更されます.
確認してみましょう.
mysql> select user,host,plugin from mysql.user;
+------------------+-----------+-----------------------+
| user | host | plugin |
+------------------+-----------+-----------------------+
| admin | % | mysql_native_password |
| debian-sys-maint | localhost | caching_sha2_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session | localhost | caching_sha2_password |
| mysql.sys | localhost | caching_sha2_password |
| root | localhost | auth_socket |
+------------------+-----------+-----------------------+
参考URL
https://qiita.com/katzueno/items/e735950c7440f232ef27
https://sys-guard.com/post-8501/
https://symfoware.blog.fc2.com/blog-entry-2159.html
https://www.s-style.co.jp/blog/2018/05/1807/