- 创建mysql,版本5.7
docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=wordpress -v $(pwd)/mysql:/var/lib/mysql mysql:5.7
这里只能用Bind Mouting方式持久化数据,用volume会报错,不知道为啥,如果是mysql8的版本好像可以,如下:
docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=wordpress -v mysql-data:/var/lib/mysql mysql
但是mysql 8的版本,wordpress连接会报错,好像是密码验证改了,需要修改mysql用户的密码验证方式
- 进入容器
docker exec -it mysql /bin/bash
- 登录数据库(此处的密码为参数-e MYSQL_ROOT_PASSWORD=root对应的值,此处密码为root)
mysql -u root -p root
- 使用mysql数据库
use mysql;
- 查询mysql8.0的root用户
select host, user, plugin from user;
从查到的结果中,可以看到root的用户的加密方式为caching_sha2_passoword, 而navicat连接所用的方式为native_password。mysql为远程连接和本地连接提供了不同的密码验证方式
- 修改root用户插件验证方式
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
修改成功之后就可以连接了
- 创建wordpress
docker run -d --name wordpress --link mysql -p 80:80 -e WORDPRESS_DB_PASSWORD=root -e MYSQL_DATABASE=mysql wordpress