最新消息:走过的,离开的,已经错过,新开始2016

果果.it 笔记-docker安装MySQL镜像

技术随笔 果果 309浏览 0评论

我们继续docker基础教程,今天我们来安装MySQL数据库。

我们现在查看我们我们已经下载的镜像。

docker images

我们下载最新MySQL镜像。

docker pull mysql:latest

如果我们不需要最新的,我们要指定版本可以这样,前提是镜像仓库里有这个版本。

docker pull mysql:5.6

完成后我们新建一个MySQL容器。

docker run -d -p 3306:3306 --name mysql -v /home/mysql/conf/mycnf:/etc/mysql/conf/my.cnf -v /home/mysql/logs:/logs -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql
参数说明
-d 让容器在后台运行
-p 3306:3306 将容器的 3306 端口映射到主机的 3306 端口
-e 设置环境变量,这里是设置mysql的root用户的初始密码,这个必须设置
-v /home/mysql/conf/my.cnf:/etc/mysql/conf/my.cnf 将主机目录下的 /home/mysql/conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf
-v /home/mysql/data:/var/lib/mysql 将主机目录下的data目录挂载到容器的 /var/lib/mysql
-v /home/mysql/logs:/logs 将主机目录下的 logs 目录挂载到容器的 /logs
–name 容器的名字,随便取,但是必须唯一

以上本地的目录和配置文件请提前建立,并保证配置文件正确。

附上默认的my.cnf.

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

一切顺利,容器被成功创建。

docker ps -a

可以看到镜像已经正在运行。

我们使用客户端Navicat进行连接,但是错误了。

原因就是我们安装的MySQL版本太新,我们的Navicat太旧,他们的加密规则不一样。

mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password。

我们需要把加密规则更换为mysql_native_password。

进入容器。

docker exec -it mysql /bin/bash

进入MySQL控制台。

mysql -uroot -p

修改root用户可以任意主机连接。

mysql> GRANT ALL ON *.* TO 'root'@'%';

修改连接加密规则。

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;

更新root密码为123456。

mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

刷新权限。

mysql> flush privileges;

测试可以正常连接MySQL。

转载请注明:果果.IT » 果果.it 笔记-docker安装MySQL镜像

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
/* 鼠标特效 */ /* 鼠标特效 */