我们继续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镜像