在dockerhub中查询mysql
docker search mysql
拉取mysql镜像(不加版本表示默认最新版)
docker pull mysql
启动容器(-d代表后台运行)
docker run --name mysql01 -d mysql
启动之后查看容器是否在运行
docker ps
发现并没有在运行。然后查看所有的容器
docker ps -a
发现mysql01存在,但是异常退出了。
查看错误日志
[root@VM_0_4_centos ~]# docker logs 1ebef00c4e53
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
读日志发现mysql的密码项未指定
删掉启动失败的容器
重新启动,指定密码
docker run --name mysql01 -e MYSQL_ROOT_PASSWORD=password -d mysql
在查看状态
启动成功。
但是在使用客户端连接的时候,连接失败,报错信息为:
*****using passwoed:YES
解决方法如下:
//进入容器:
docker exec -it 62349aa31687 /bin/bash
//进入mysql:
mysql -uroot -p
//授权:
mysql> GRANT ALL ON *.* TO 'root'@'%';
//刷新权限:
mysql> flush privileges;
//更新加密规则:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
//更新root用户密码:
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '1234';
//刷新权限:
mysql> flush privileges;
然后使用客户端连接,成功。使用程序连接,依然成功。
需要注意的是,这只是我本地测试使用的。没有挂载数据,没有设置自启动等等。若要使用,还需更为完善的配置。