#默認拉取最新版mysql
docker pull mysql
#啓動mysql
docker run -itd --name mysql-test -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
參數解釋:
- –name:容器名,此處命名爲
mysql
- -e:配置信息,此處配置mysql的root用戶的登陸密碼
- -p:端口映射,此處映射 主機3308端口 到 容器的3306端口
docker container ls 可以看到容器ID,容器的源鏡像,啓動命令,創建時間,狀態,端口映射信息,容器名字
查看窗口狀態
使用navicat工具連接時,提示如下信息:Connnection Failed: Client does not support authentication protocol requested by server; consider upgrading MySQL client
由於docker 中mysql的版本是8,經分析是navicat版本的問題,出現連接失敗的原因
mysql8之前的版本中加密規則是mysql_native_password
mysql8之後加密規則是caching_sha2_password
1.升級navicat
2.修改數據庫加密規則
看個人需求,下面主要講解如何修改數據庫加密規則,把用戶密碼登錄的加密規則還原成mysql_native_password加密方式
mysql> alter user 'root'@'%' identified by 'password' password expire never;
Query OK, 0 rows affected (0.02 sec)
mysql> alter user 'root'@'%' identified with mysql_native_password by '123456';
Query OK, 0 rows affected (0.01 sec)
然後在查詢:select user,host,plugin from user where user='root';
再次使用navicat進行連接即可,如果遇到這樣問題,是由於root用戶權限問題
不建議使用root直接登錄 ,可能創建其它用戶來訪問
mysql創建用戶:
create user test123456 identified by 'Test%123456';
授權
grant all on *.* to 'test123456'@'%';
alter user to 'test123456'@'%' identified by 'Test%123456';
flush privileges;