Docker安装mysql并连接
推荐:https://www.cnblogs.com/sablier/p/11605606.html
安装MySQL
我们可以先检查一下服务器上有没有MySQL的镜像文件。
docker search mysql
- 1
下载MySQL镜像并指定镜像的版本号。
docker pull mysql:5.7
- 1
如果需要查看已经下载的镜像文件,可以使用下面的命令。
docker images
- 1
创建并运行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
- 1
- 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
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
# 或者
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
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
如果安装了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/bash
docker exec -it mysql101 /bin/bash
- 1
- 2
- 3
进入容器的交互式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>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
接下来通过SQL来修改用户密码就可以了。
123456你想改就改
alter user 'root'@'%' identified with mysql_native_password by '123456' password expire never;
- 1
当然,如果愿意你也可以查看一下用户表检查是否修改成功。
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)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
在完成上面的步骤后,现在即便不更新客户端工具也可以连接MySQL 8.x了。
文章来源: maoli.blog.csdn.net,作者:刘润森!,版权归原作者所有,如需转载,请联系作者。
原文链接:maoli.blog.csdn.net/article/details/103580038
- 点赞
- 收藏
- 关注作者
评论(0)