Docker安装mysql并连接

举报
毛利 发表于 2021/07/15 05:37:41 2021/07/15
【摘要】 推荐:https://www.cnblogs.com/sablier/p/11605606.html 安装MySQL 我们可以先检查一下服务器上有没有MySQL的镜像文件。 docker search mysql 1 下载MySQL镜像并指定镜像的版本号。 docker pull mysql:5.7 1 如果需要查看已经下载的镜像文件,可以使用下面的命令。 ...

推荐: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

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。