安装MySQL需要的步骤是
1.直接拉取所谓的镜像,拉取的是latest版本的
docker pull mysql
2.创建mysql的容器并启动
docker run --name mysql01 -d mysql
以上的指令,你会发现通过
docker ps -a
发现docker竟然没有启动mysql容器,为什么会这样呢,我们通过查看docker日志来知晓
docker logs mysql01
结果会提示你
error: database is uninitialized and password option is not specified
You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD
也就是说,我们需要进行配置密码,当然你也可以通过docker hub官网来得知,需要如何进行配置,现在让我们来进行配置吧,对了不要忘记进行端口的映射哈
docker run --name mysql02 -e MYSQL_ROOT_PASSWORD=123456 -p 3307:3306 mysql -d
当我配置好以后,又出现了新的问题
使用Navicat连接出现了1251的错误,要解决这个错误
1.进入docker的mysql容器里面
docker exec -it mysql01 /bin/bash
2.进入mysql内
mysql -uroot -p123456
3.接下来我们需要授权,使得外部能访问我们的数据库
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION;
#####
不要忘记刷新一下权限
flush privileges
4.这样仅仅是使得能被访问,但是需要知道一件事,mysql8.0之后的加密规则发生了变换,我们需要重新设置一下mysql的加密规则
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;
图中的123456表示是你docker内连接数据数据库的密码,不要改错了
接下来我们需要修改一下,远程连接我们数据的密码,可以与上图不一致
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
现在我们通过Navicat来进行连接使用的密码是password,而我们在docker内连接mysql的密码使用的是123456
对了,可能你在使用的过程中,还会遇到这个样的问题
/usr/bin/docker-current: Error response from daemon:
driver failed programming external connectivity on endpoint mysql02
(4b3b0161cc733040660d531e1acc64df990ba797b48a10a3942229eb2990e9ec):
(iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0
--dport 3307 -j DNAT --to-destination 172.17.0.3:3306 ! -i docker0:
iptables: No chain/target/match by that name.
直接给我重新启动一下docker,在重启容器
system restart docker
完美