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,配置文件路径改了,用原来的方式挂载目录会失效。

相关推荐
帧栈1 小时前
mysql基础(一)快速上手篇
mysql
即将头秃的程序媛2 小时前
centos 7.9安装tomcat,并实现开机自启
linux·运维·centos
fangeqin2 小时前
ubuntu源码安装python3.13遇到Could not build the ssl module!解决方法
linux·python·ubuntu·openssl
爱奥尼欧3 小时前
【Linux 系统】基础IO——Linux中对文件的理解
linux·服务器·microsoft
戒不掉的伤怀4 小时前
【Navicat 连接MySQL时出现错误1251:客户端不支持服务器请求的身份验证协议;请考虑升级MySQL客户端】
服务器·数据库·mysql
超喜欢下雨天4 小时前
服务器安装 ros2时遇到底层库依赖冲突的问题
linux·运维·服务器·ros2
tan77º4 小时前
【Linux网络编程】网络基础
linux·服务器·网络
wuxinyan1235 小时前
Java面试题033:一文深入了解MySQL(5)
java·数据库·mysql·面试
笑衬人心。5 小时前
Ubuntu 22.04 + MySQL 8 无密码登录问题与 root 密码重置指南
linux·mysql·ubuntu
IT成长日记5 小时前
【Docker基础】Docker数据卷管理:docker volume inspect及其参数详解
运维·docker·容器·volume·inspect