目录
一、Linux下使用Docker安装Mysql5
1 - 安装mysql5
前提是已经安装好了Docker,参考https://blog.csdn.net/qq23001186/article/details/125695822
- docker拉取mysql镜像:
docker pull mysql:5.7
- 查看mysql的docker镜像:
docker images
- docker启动mysql镜像:注意下列命令的密码需要自己修改
-p 3306:3306
:将容器的3306端口映射到主机的3306端口-v $PWD/conf:/etc/mysql/conf.d
:将主机当前目录下的conf/my.cnf挂载到容器的/etc/mysql/my.cnf-v $PWD/logs:/logs
:将主机当前目录下的logs目录挂载到容器的/logs-v $PWD/data:/var/lib/mysql
:将主机当前目录下的data目录挂载到容器的/var/lib/mysql-e MYSQL_ROOT_PASSWORD=密码
:初始化root用户的密码
docker run -p 3306:3306 --name mysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=密码 -d mysql:5.7
- 查看STATUS:确保是Up状态,不应该是Exited
- 日志查看:
docker logs idxxxx
2 - Mysql容器配置
- Mysql安全策略:由于mysql的安全策略,现在还不能使用root/密码来访问数据库
- 进入mysql容器:先使用
docker ps -a
获取mysql容器的id,docker exec -it idxxxx /bin/bash
- 进入mysql:
mysql -uroot -p密码
,这样就可以进入mysql的交互环境了
- 建立用户并授权:依次执行下列命令,注意下列命令的密码需要修改为你自己的密码
GRANT ALL PRIVILEGES on *.* TO 'root'@'%' IDENTIFIED by '密码' WITH GRANT OPTION;
GRANT ALL PRIVILEGES on *.* TO 'root'@'127.0.0.1' IDENTIFIED by '密码' WITH GRANT OPTION;
GRANT ALL PRIVILEGES on *.* TO 'root'@'localhost' IDENTIFIED by '密码' WITH GRANT OPTION;
FLUSH PRIVILEGES;
- 执行退出:第1个‘exit’退出mysql,第2个‘exit’退出容器
3 - 使用工具连接mysql
- 这里工具根据自己的习惯即可,没有强制要求:这里的ip地址是虚拟机的ip地址,密码是上一步授权的密码
二、Linux下使用Docker安装Mysql8
前提是已经安装好了Docker,参考https://blog.csdn.net/qq23001186/article/details/125695822
1 - 安装mysql8
-
docker拉取mysql8以上镜像:
- 拉取镜像:
docker pull mysql:8.0.22
- 查看镜像:
docker images
- 拉取镜像:
-
docker启动mysql镜像:注意下列命令的密码需要自己修改
-p 3306:3306
:将容器的3306端口映射到主机的3306端口-v $PWD/conf:/etc/mysql/conf.d
:将主机当前目录下的conf/my.cnf挂载到容器的/etc/mysql/my.cnf-v $PWD/logs:/logs
:将主机当前目录下的logs目录挂载到容器的/logs-v $PWD/data:/var/lib/mysql
:将主机当前目录下的data目录挂载到容器的/var/lib/mysql-e MYSQL_ROOT_PASSWORD=密码
:初始化root用户的密码
密码自行修改
如果存在多个mysql,需要将-p后的第一个3306端口修改为其他端口
docker run -p 3306:3306 --name mysql8022 -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123 -d mysql:8.0.22
2 - Mysql容器配置
-
Mysql安全策略:由于mysql的安全策略,现在还不能使用root/密码来访问数据库
-
进入mysql容器:先使用
docker ps -a
获取mysql容器的id,docker exec -it idxxxx /bin/bash
-
进入mysql:
mysql -uroot -p密码
,这样就可以进入mysql的交互环境了
- 连接数据库:
use mysql;
- 查询已有用户:
select host,user from user;
- 新建缺少的用户并授权:我们需要给root用户的3个host授权,分别是
%
、localhost
、127.0.0.1
,没有的用户需要先新建再授权,已有的用户就授权就可以了- 新建:
create user 'root'@'127.0.0.1' identified by '123';
、授权:grant all privileges on *.* to 'root'@'127.0.0.1';
- 新建:
create user 'root'@'%' identified by '123';
、授权:grant all privileges on *.* to 'root'@'%';
- 新建:
create user 'root'@'localhost' identified by '123';
、授权:grant all privileges on *.* to 'root'@'localhost';
- 刷新:
FLUSH PRIVILEGES;
- 新建:
- 修改验证方式:MySql 8.0.11 换了新的身份验证插件(caching_sha2_password),而原来的身份验证插件为(mysql_native_password)
- 查询:
select user,plugin from user where user='root';
- 修改:
alter user 'root'@'%' identified with mysql_native_password by '123';
- 查询:
- 执行退出:第1个‘exit’退出mysql,第2个‘exit’退出容器
3 - 使用工具连接mysql
- 这里工具根据自己的习惯即可,没有强制要求:这里的ip地址是虚拟机的ip地址,密码是上一步授权的密码