1,docker 安装mysql 5.7
下载MySQL5.7
的docker镜像
bash
docker pull mysql:5.7
使用如下命令启动MySQL服务:
bash
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
参数说明
- -p 3306:3306:将容器的3306端口映射到主机的3306端口
- -v /mydata/mysql/conf:/etc/mysql:将配置文件夹挂在到主机
- -v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机
- -v /mydata/mysql/data:/var/lib/mysql/:将数据文件夹挂载到主机
- -e MYSQL_ROOT_PASSWORD=root:初始化root用户的密码
遇到问题:如果遇到如下问题,说明映射的配置文件有问题
bash
root@liusongshan-X55VDR:/etc# docker logs 6c69c0c7e86174b60597b515d0cec9018ea58f109f9ecfac2396beeac0c593f5
2023-09-14 07:01:37+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.43-1.el7 started.
2023-09-14 07:01:37+00:00 [ERROR] [Entrypoint]: mysqld failed while attempting to check config
command was: mysqld --verbose --help --log-bin-index=/tmp/tmp.5pVGLvMw7t
mysqld: Can't read dir of '/etc/mysql/conf.d/' (Errcode: 2 - No such file or directory)
mysqld: [ERROR] Fatal error in defaults handling. Program aborted!
解决方式:
在/mydata/mysql/conf下面执行创建.cnf文件,文件名随意
bash
touch my.cnf
2,修改密码
1.查看启动的MySQL容器id
bash
docker ps |grep mysql
2.进入启动的MySQL容器中
bash
docker exec -it a00ba5071c1e /bin/bash
3.修改MySQL配置文件
在最后一行添加skip-grant-tables代码( //跳过mysql的密码验证)
(如果容器中没有vim命令的话,可以依次使用命令apt-get update ,apt-get install vim 下载安装vim)
bash
vim /etc/mysql/conf.d/docker.cnf
4.重启数据库
bash
service mysql restart
5.重启MySQL容器
bash
docker restart a00ba5071c1e
6.再次进入启动的MySQL容器内
bash
docker exec -it a00ba5071c1e /bin/bash
6.使用语句mysql -u root -p 语句
登录数据库,不用输入密码,直接回车
mysql -u root -p
7.使用MySQL数据库
use mysql
8.更新用户密码
update mysql.user set authentication_string=password('123') where user='root';
9.退出mysql
10.再次编辑mysql配置文件
删除刚刚添加的skip-grant-tables
bash
vim /etc/mysql/conf.d/docker.cnf
11.再次重启mysql
bash
service mysql restart
12.再次重启docker容器
bash
docker restart a00ba5071c1e
3,开启远程访问
sql
use mysql;
-- 修改host
update user set host = '%' where user = 'root';
-- 配置生效
flush privileges;