环境
- 操作系统:CentOS 7
- Docker版本:20.10.0
准备
提前开放好mysql需要用到的端口号,有的还需要去服务器的控制中心添加放行端口号,CentOS 7有关开放端口号的操作可以看这篇文章:CentOS 7 开启防火墙及开放指定端口
拉取镜像,默认拉取最高版本,目前应该是mysql 8
Docker常用的操作命令可以查看这篇文章:Docker常用命令[持续更新]
拉取指定版本
运行容器
docker run --restart=always -d -p 3306:3306 --privileged=true -v /docker/mysql/conf/my.cnf:/etc/my.cnf -v /docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name docker_mysql mysql
|
参数说明
- run:运行
- --restart=always:当docker重启时,该容器也会重新启动
- -d:后台运行
- -p:映射端口号,容器内部和服务器内部关联
- --privileged=true:设置允许root用户登陆
- -v /docker/mysql/conf/my.cnf:/etc/my.cnf:将服务器中的my.cnf配置映射到docker中的/docker/mysql/conf/my.cnf配置
- -v /docker/mysql/data:/var/lib/mysql:同上,映射数据库的数据目录, 避免以后docker删除重新运行MySQL容器时数据丢失
- -e MYSQL_ROOT_PASSWORD=123456:设置root账户密码为123456
- --name docker_mysql mysql:启动一个mysql并设置docker容器名称为docker_mysql
进入容器
docker exec -it docker_mysql(docker容器名称) bash
|
连接mysql
创建用户
创建一个test账户密码为123456,并且允许远程登陆,如果想要test账户只能安装mysql的这台机器登陆,就把’%’改成’localhost’
CREATE USER 'test'@'%' IDENTIFIED BY '123456';
|
授权
授予test账户所有权限
grant all on *.* to 'test'@'%';
|
注意
如果安装的是mysql8,需要更改加密方式才能使用Navicat工具远程连接,所有需要远程连接的账户都要更改,如果不是mysql8,比如mysql5.7是不需要的
更改加密方式
ALTER USER 'test'@'%' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;
|
更新密码
ALTER USER 'test'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
|
刷新权限
退出
执行两遍,第一次退出mysql,第二次退出docker容器