docker-compose部署mysql
docker-composer配置mysql数据库
·
docker-compose.yml配置mysql
1、docker-compose.yml配置
version: "3.7"
services:
mysql: #mysql容器
image: mysql
container_name: mysql
restart: always
command: --default-authentication-plugin=mysql_native_password
environment:
MYSQL_ROOT_PASSWORD: "123456" #这里自行设置root用户的密码
volumes:
- ./etc/my.cnf/:/etc/my.cnf/
- ./datadir:/var/lib/mysql
- ./etc/initdb.d:/docker-entrypoint-initdb.d
- ./etc/mysql/my.cnf:/etc/mysql/my.cnf # 这里挂载容器中mysql的配置文件
ports:
- 3306:3306 #宿主机和容器间的端口映射,可自行配置
phpmyadmin: #这里本人还配置了phpmyadmin容器,相当于连接mysql的客户端工具
image: phpmyadmin/phpmyadmin
container_name: phpmyadmin
restart: always
ports:
- 3300:80 #宿主机和容器间的端口映射,可自行配置
environment:
PMA_ARBITRARY: 1
TZ: Asia/Shanghai
UPLOAD_LIMIT: 100M
2、 启动docker容器
执行:docker-compose up -d 命令,查看容器启动情况
3、成功后通过浏览器输入ip:3300连接数据库
服务器:ip:mysql容器端口
用户名:root
密码:docker-compose中的设置的密码
如果连接成功直接进入主页面(可以操作数据库)。
如果连接失败,如下图所示,请参考44、如果连接失败,表示在docker-composer.yml中设置的mysql的root用户密码未生效。需要对容器的/etc/mysql/my.cnf(linux环境,本人的路径)添加下图红线的配置:skip-grant-tables
5、修改方式有多种:
① 可以直接在容器中对文件进行修改(但是本人容器中不支持vi命令)。
② 将文件映射到宿主机上进行修改,但是在docker-composer.yml文件的映射并未生效(研究了半天未解决。。。),只好退而求其次,使用docker cp命令将文件从容器中拷贝到宿主机进行修改,修改完后在拷贝回去。
从容器中拷贝到宿主机上的命令:docker cp mysql:/etc/mysql/my.cnf 宿主机目录
执行修改,添加skip-grant-tables配置
从宿主机上拷贝到容器中的命令:docker cp 宿主机目录 mysql:/etc/mysql/my.cnf (拷贝回容器前最好对my.cnf源文件备份,后面还需要删除添加的配置)
③ 修改完成后,重启mysql容器。
④ 使用mysql -uroot -p连接mysql。
连接成功后,先查看mysql这个数据库中的user表下的root用户情况:
如果root用户时localhost的话,先执行下面一系列命令:
update user set host = '%' where host = 'localhost' and user = 'root';
flush privileges;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
flush privileges;
执行完成后即可。
6、此时在去phpadmin界面连接mysql数据库即可成功。
完成后记得去容器中将my.cnf文件的配置skip-grant-tables去了。这里不在详细介绍。
备注:以上仅是个人在配置mysql时遇到的问题,可能不够全面。欢迎大家分享遇到的问题,共同进步。
更多推荐
已为社区贡献1条内容
所有评论(0)