关于docker的使用(二):简单安装mysql

安装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 

完美

猜你喜欢

转载自blog.csdn.net/qq_41967899/article/details/88892544