1.拉取MySQL镜像
可以先通过docker search mysql
,可以看到MySQL的众多镜像,然后自行选择下载。
- 拉取镜像:
docker pull mysql
mysql 此处是对应的镜像名
通过docker images
查看镜像是否下载成功。
2、运行镜像
- 首先创建数据卷挂载目录和文件
mkdir -p docker/mysql/config
mkdir -p docker/mysql/data
- 在config目录创建my.cnf,并编辑
vi my.cnf
- my.cnf中编辑,配置字符集
[mysqld]
user=mysql
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
- 运行镜像,创建镜像实例
docker run -d -p 3306:3306 \
-v /home/ubuntu/docker/mysql/config/my.cnf:/etc/my.cnf \
-v /home/ubuntu/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD="123456" --name mysql mysql
注:
- \ 是命令换行
- -d 容器后台运行,并返回容器ID
- -p 指定端口映射,格式 为:前面是主机端口,后面是容器端口。
- -v 数据卷挂载,需要自行创建好。
- -e 设置MySQL属性,root密码
- -name 是给镜像实例去别名
- 最后的mysql 是镜像名,如果拉取的镜像名不是mysql,注意修改,可以docker images查看镜像,可能是mysql/mysql-server或者其他镜像。
3、Navicat测试连接
填入主机地址,如果是本机,就是localhost,服务器的话就填对应ip,端口是3306,也可以映射不同的端口。
ERROR
- 1130错误:需要配置root权限
docker exec -it mysql bash
mysql -u root -p123456
use mysql
update user set host='%' where user='root';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '';
select host,user from user;
flush privileges;
注:
docker exec -it mysql bash 进入MySQL容器
flush privileges 是刷新,使得立即生效。
GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘’; 是命令来允许root用户从任意位置登录。(此处可能和后面需要改密码有关)
- 1251错误:需要修改密码
docker exec -it mysql bash
mysql -u root -p123456
use mysql
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的新密码';
flush privileges;
Tips:
mysql -V
查看MySQL版本- Navicat安装