Docker安装mysql并连接
推薦:https://www.cnblogs.com/sablier/p/11605606.html
安裝MySQL
我們可以先檢查一下服務器上有沒有MySQL的鏡像文件。
docker search mysql下載MySQL鏡像并指定鏡像的版本號。
docker pull mysql:5.7如果需要查看已經下載的鏡像文件,可以使用下面的命令。
docker images創建并運行MySQL容器。
不建議用這種
docker run -d -p 33306:3306 --name mysql57 -v $PWD/mysql/conf:/etc/mysql/mysql.cnf.d -v $PWD/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7- name:容器名,此處命名為mysql
- e:配置信息,此處配置mysql的root用戶的登陸密碼
- p:端口映射,此處映射 主機3306端口 到 容器的3306端口
- d:源鏡像名,此處為 mysql:5.7
- v:主機和容器的目錄映射關系,":"前為主機目錄,之后為容器目錄
注意,上面創建容器時我們又一次使用了數據卷操作,那是因為通常容器是隨時創建隨時刪除的,而數據庫中的數據卻是需要保留下來的,所以上面的兩個數據卷操作一個是映射了MySQL配置文件所在的文件夾,一個是映射了MySQL數據所在的文件夾,這里的數據卷操作非常重要。我們可以將MySQL的配置文件放在$PWD/mysql/conf目錄下,配置文件的具體內容如下所示:
[mysqld] pid-file=/var/run/mysqld/mysqld.pid socket=/var/run/mysqld/mysqld.sock datadir=/var/lib/mysql log-error=/var/log/mysql/error.log server-id=1 log-bin=/var/log/mysql/mysql-bin.log expire_logs_days=30 max_binlog_size=256M symbolic-links=0 # 或者 sudo docker run -p 33306:3306 --name mysql101 \ -v /usr/local/docker/mysql/conf:/etc/mysql \ -v /usr/local/docker/mysql/logs:/var/log/mysql \ -v /usr/local/docker/mysql/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=123456 \ -d mysql:5.7如果安裝了MySQL 8.x版本(目前的最新版本),在使用客戶端工具連接服務器時可能會遇到“error 2059: Authentication plugin ‘caching_sha2_password’ cannot be loaded”的問題,這是因為MySQL 8.x默認使用了名為“caching_sha2_password”的機制對用戶口令進行了更好的保護,但是如果客戶端工具不支持新的認證方式,連接就會失敗。解決這個問題有兩種方式:一是升級客戶端工具來支持MySQL 8.x的認證方式;二是進入容器,修改MySQL的用戶口令認證方式。下面是具體的步驟,我們先用docker exec命令進入容器的交互式環境,假設運行MySQL 8.x的容器名字叫mysql8x。
docker exec -it mysql8x /bin/bashdocker exec -it mysql101 /bin/bash進入容器的交互式Shell之后,可以首先利用MySQL的客戶端工具連接MySQL服務器。
mysql -u root -p Enter password: Your MySQL connection id is 16 Server version: 8.0.12 MySQL Community Server - GPL Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>接下來通過SQL來修改用戶密碼就可以了。
123456你想改就改
當然,如果愿意你也可以查看一下用戶表檢查是否修改成功。
use mysql; select user, host, plugin, authentication_string from user where user='root'; +------+-----------+-----------------------+-------------------------------------------+ | user | host | plugin | authentication_string | +------+-----------+-----------------------+-------------------------------------------+ | root | % | mysql_native_password | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | | root | localhost | mysql_native_password | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | +------+-----------+-----------------------+-------------------------------------------+ 2 rows in set (0.00 sec)在完成上面的步驟后,現在即便不更新客戶端工具也可以連接MySQL 8.x了。
總結
以上是生活随笔為你收集整理的Docker安装mysql并连接的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 珠海的大家闺秀、钟爱一生和蒙娜丽莎谁的婚
- 下一篇: 奋斗之露商城直采价真的就是会员价吗?