前言
使用Docker做自动化部署篇——安装MySQL。 我的服务器环境以及Docker环境有在上一篇安装中介绍过,这一篇就不做过多说明了。 这一篇主要记录我使用Docker安装MySQL的过程的图文,和一些注意事项。
1. 创建MySQL挂载文件夹目录
mkdir -p /d/mysql/conf
2. 配置my.cof(目录/d/mysql/conf)
vim /d/mysql/conf/my.cnf
按i进入输入模式,然后粘贴下面的代码,按esc之后在输入:wq保存退出
[mysql]
#设置服务器默认字符集为utf8mb4
default-character-set=utf8mb4
[mysqld]
#配置服务器的服务号,具备日后需要集群做准备
server-id = 1
#开启MySQL数据库的二进制日志,用于记录用户对数据库的操作SQL语句,具备日后需要集群做准备
log-bin=mysql-bin
#设置清理超过30天的日志,以免日志堆积造过多成服务器内存爆满
expire_logs_days=30
#允许最大的连接数
max_connections=16384
# 禁用符号链接以防止各种安全风险
symbolic-links=0
# 设置东八区时区
default-time_zone = '+8:00'
#wait_timeout参数值,由默认的8小时,修改为30分钟。
wait_timeout=1800
#修改back_log参数值:由默认的50修改为500 每个线程256K 1.6W线程2G左右
back_log=500
character_set_server=utf8mb4
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect=SET NAMES utf8mb4
3. 拉取MySQL镜像
docker pull mysql:8.0.40
(可能需要等两分钟,我使用的8.0.40,不要使用不稳定的版本)
4. 启动mysql容器
docker run -p 3306:3306 --name mysql --restart always -v /d/mysql/conf/my.cnf:/etc/mysql/my.cnf -v /d/mysql/logs:/logs -v /d/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0.40
docker run: 启动一个新的容器。-p 3306:3306: 将主机的 3306 端口映射到容器的 3306 端口,MySQL 默认使用 3306 端口。--name mysql: 给这个容器命名为 mysql。--restart always: 设置容器自动重启策略,always 表示无论因为什么原因退出,Docker 守护进程都会自动重启容器。-v /data/mysql/conf/my.cnf:/etc/mysql/my.cnf: 将主机的 /data/mysql/conf/my.cnf 文件挂载到容器的 /etc/mysql/my.cnf 文件,这个文件是 MySQL 的配置文件。-v /data/mysql/logs:/logs: 将主机的 /data/mysql/logs 目录挂载到容器的 /logs 目录,用于存储日志文件。-v /data/mysql/data:/var/lib/mysql: 将主机的 /data/mysql/data 目录挂载到容器的 /var/lib/mysql 目录,用于存储数据库数据。-e MYSQL_ROOT_PASSWORD=root: 设置 MySQL 的 root 用户密码为 root,通过环境变量 MYSQL_ROOT_PASSWORD 传递。-d: 后台运行容器并返回容器 ID。mysql:8.0.40: 使用 mysql 镜像的 8.0.40 版本来创建容器。
5. 修改密码
使用mysql命令行工具
- 首先,使用以下命令找到容器的名称或ID:
docker ps -a
如上图正确启动
- 然后使用以下命令进入容器:
将<container_id_or_name>替换为你的MySQL容器的实际ID或名称。
docker exec -it mysql bash
- 使用账号密码登录MySQL:
mysql -u root -p
根据提示输入当前的root密码。(根据我之前的启动方式,密码是:root)
- 修改密码: 在MySQL命令行中,执行以下SQL命令来修改密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
将new_password替换为你想要设置的新密码。如果你希望密码适用于所有主机,可以使用'root'@'%':
ALTER USER 'root'@'%' IDENTIFIED BY 'new_password';
# 添加远程登录用户(可忽略) # 创建用户 # 赋予权限
CREATE USER 'luoxu'@'%' IDENTIFIED WITH mysql_native_password BY 'luoxu123';
GRANT ALL PRIVILEGES ON *.* TO 'luoxu'@'%';
- 执行完毕后,记得刷新权限:
FLUSH PRIVILEGES;
- 退出容器: 输入
exit退出MySQL命令行,然后再输入exit退出容器。
- 测试连接MySQL
提示:连接不上时
- liunx服务器的防火墙是否关闭/指定端口开放
# 停止防火墙
systemctl stop firewalld
# 禁用防火墙
systemctl disable firewalld
# 查看防火墙状态
systemctl status firewalld
- 如果是用的云服务器,也需要在控制中,进入服务器,开放指定端口(3306)
- 排查密码是否修改成功(重复上面的进入MySQL容器的指令,如果能用新密码进入,说明修改密码成功)
最后测试连接,连接成功
结语
Docker安装MySQL就到此结束了,希望能对大家有帮助!