MY SQLサーバーを立てたときにつまずいたので記録残します。
# mysqlインストール
apt install mysql-server mysql-client
# スタートアップに登録
systemctl enable mysql
systemctl start mysql
# DBとUSER作成
mysql -uroot
CREATE DATABASE [DB NAME] CHARACTER SET UTF8 COLLATE UTF8_BIN;
CREATE USER '[USER NAME]'@'%' IDENTIFIED BY '[PASSWORD]';
GRANT ALL PRIVILEGES ON [DB NAME].* TO '[USER NAME]'@'%';
FLUSH PRIVILEGES;
quit;
# リモート接続できるDBを確認
select User,Host, plugin FROM mysql.user;
+------------------+-----------+-----------------------+
| User | Host | plugin |
+------------------+-----------+-----------------------+
| rakuten | % | caching_sha2_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 |
+------------------+-----------+-----------------------+
# 認証方式をパスワードに変更
# auth_socketはログインしているユーザーと同じユーザーでログイン
ALTER USER '[USER NAME]'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';
# リモート接続できるDBとUSERを設定
# どこからでもアクセスできるようにする場合はIPアドレスを"%"に設定
grant all privileges on [db_name].* to [user_name]@"[ip_address]" identified by '[password]' with grant option;
# そもそもmysqlの設定で外部接続を許可していない場合
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
抜粋-------------------------------------
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1 ←ここで接続元IPを制限
mysqlx-bind-address = 127.0.0.1
#
-------------------------------------
# mysqlサービスを再起動
sudo systemctl restart mysql