Docker安装mysql并连接
推薦:https://www.cnblogs.com/sablier/p/11605606.html
安裝MySQL
我們可以先檢查一下服務(wù)器上有沒(méi)有MySQL的鏡像文件。
docker search mysql下載MySQL鏡像并指定鏡像的版本號(hào)。
docker pull mysql:5.7如果需要查看已經(jīng)下載的鏡像文件,可以使用下面的命令。
docker images創(chuàng)建并運(yùn)行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:端口映射,此處映射 主機(jī)3306端口 到 容器的3306端口
- d:源鏡像名,此處為 mysql:5.7
- v:主機(jī)和容器的目錄映射關(guān)系,":"前為主機(jī)目錄,之后為容器目錄
注意,上面創(chuàng)建容器時(shí)我們又一次使用了數(shù)據(jù)卷操作,那是因?yàn)橥ǔH萜魇请S時(shí)創(chuàng)建隨時(shí)刪除的,而數(shù)據(jù)庫(kù)中的數(shù)據(jù)卻是需要保留下來(lái)的,所以上面的兩個(gè)數(shù)據(jù)卷操作一個(gè)是映射了MySQL配置文件所在的文件夾,一個(gè)是映射了MySQL數(shù)據(jù)所在的文件夾,這里的數(shù)據(jù)卷操作非常重要。我們可以將MySQL的配置文件放在$PWD/mysql/conf目錄下,配置文件的具體內(nèi)容如下所示:
[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版本(目前的最新版本),在使用客戶端工具連接服務(wù)器時(shí)可能會(huì)遇到“error 2059: Authentication plugin ‘caching_sha2_password’ cannot be loaded”的問(wèn)題,這是因?yàn)镸ySQL 8.x默認(rèn)使用了名為“caching_sha2_password”的機(jī)制對(duì)用戶口令進(jìn)行了更好的保護(hù),但是如果客戶端工具不支持新的認(rèn)證方式,連接就會(huì)失敗。解決這個(gè)問(wèn)題有兩種方式:一是升級(jí)客戶端工具來(lái)支持MySQL 8.x的認(rèn)證方式;二是進(jìn)入容器,修改MySQL的用戶口令認(rèn)證方式。下面是具體的步驟,我們先用docker exec命令進(jìn)入容器的交互式環(huán)境,假設(shè)運(yùn)行MySQL 8.x的容器名字叫mysql8x。
docker exec -it mysql8x /bin/bashdocker exec -it mysql101 /bin/bash進(jìn)入容器的交互式Shell之后,可以首先利用MySQL的客戶端工具連接MySQL服務(wù)器。
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>接下來(lái)通過(guò)SQL來(lái)修改用戶密碼就可以了。
123456你想改就改
當(dāng)然,如果愿意你也可以查看一下用戶表檢查是否修改成功。
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)在完成上面的步驟后,現(xiàn)在即便不更新客戶端工具也可以連接MySQL 8.x了。
總結(jié)
以上是生活随笔為你收集整理的Docker安装mysql并连接的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 珠海的大家闺秀、钟爱一生和蒙娜丽莎谁的婚
- 下一篇: 六十九、Springboot整合JDBC