Linux 下使用 Docker 安装 MySQL

1、下载 mysql

bash 复制代码
docker pull mysql:5.7.36

2、启动 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=123456 \
-d mysql:5.7.36

命令解析:

-p 指定容器端口到主机端口的映射

--name 指定容器名称

-v 将主机上的对应目录挂载到容器的对应目录

-e 设置环境变量

-d 让容器在后台运行

3、修改 mysql 配置文件 my.cnf

bash 复制代码
vim /mydata/mysql/conf/my.cnf

更新配置文件

ini 复制代码
[client]
port = 3306
password = 123456
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
port = 3306
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

4、重启 mysql

bash 复制代码
docker restart mysql

5、docker 查看日志

bash 复制代码
docker logs mysql
docker logs -f mysql  # 实时查看

6、进入 mysql,连接 mysql 命令行

bash 复制代码
[root@xxx ~]# docker exec -it mysql /bin/bash
root@e83a22cd6197:/# mysql -uroot -p123456
mysql> exit
Bye
root@e83a22cd6197:/# exit
# 连接成功,即安装成功。

7、设置 mysql 自动启动

bash 复制代码
# 开启自启
sudo docker update mysql --restart=always
# 关闭自启
sudo docker update mysql --restart=no

8、mysql 权限设置语句

bash 复制代码
use mysql;

show tables;
select user, host from user;

# 允许远程访问
update user set host = '%' where user = 'root' and host = 'localhost';

# 添加一个指定 ip 的 root 用户
create user 'root'@'xxx.xxx.xxx.xxx' identified by '123456';
grant all privileges on *.* to 'root'@'xxx.xxx.xxx.xxx' with grant option;

# 更新
update user set host = 'xxx.xxx.%.%' where user = 'root' and host = 'xxx.xxx.xxx.xxx';
flush privileges;

9、注意,如果不指定 mysql 版本为 5.7.36,而是 5.7。可能出现错误

bash 复制代码
mysqld: Can't read dir of '/etc/mysql/conf.d/' (Errcode: 2 - No such file or directory)

因为 mysql 新版本 5.7.43,配置文件路径改了,用原来的方式挂载目录会失效。

相关推荐
明月(Alioo)6 分钟前
机器学习入门,用Lima在macOS免费搭建Docker环境,彻底解决镜像与收费难题!
macos·docker·容器
WillWolf_Wang8 分钟前
Linux 编译 Android 版 QGroundControl 软件并运行到手机上
android·linux·智能手机
岚天start9 分钟前
Shell脚本一键监控平台到期时间并钉钉告警推送指定人
linux·shell·钉钉告警·计划任务·监控到期·平台到期
MyFreeIT1 小时前
MySQL Function
数据库·mysql
白鹭1 小时前
MySQL主从复制进阶(GTID复制,半同步复制)
linux·运维·数据库·mysql·集群
叫我Zoe就行2 小时前
MySQL集群——主从复制
linux·数据库·学习·mysql
叫我龙翔2 小时前
MySQL】从零开始了解数据库开发 --- 表的操作
数据库·mysql·数据库开发
博语小屋2 小时前
进程控制之进程等待
linux
Dobby_052 小时前
【Linux】网络安全管理:SELinux 和 防火墙联合使用 | Redhat
linux·运维·云原生·防火墙·selinux
叫我阿柒啊2 小时前
从Java全栈到云原生:一场技术深度对话
java·spring boot·docker·微服务·typescript·消息队列·vue3