Docker安装MySQL

简易安装部署

# docker 中下载 mysql
docker pull mysql
#启动
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -d mysql
#进入容器
docker exec -it mysql bash
#登录mysql
mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password!';
#添加远程登录用户
CREATE USER 'testuser'@'%' IDENTIFIED WITH mysql_native_password BY 'password!';
GRANT ALL PRIVILEGES ON *.* TO 'testuser'@'%';

进阶配置

MySQL(5.7.19)的默认配置文件是 /etc/mysql/my.cnf 文件。如果想要自定义配置,建议向 /etc/mysql/conf.d 目录中创建 .cnf文件。新建的文件可以任意起名,只要保证后缀名是 cnf 即可。新建的文件中的配置项可以覆盖 /etc/mysql/my.cnf 中的配置项。

自定义配置和数据持久化设置

# 创建挂载路径和配置文件
mkdir -p /opt/docker_v/mysql/conf.d
touch /opt/docker_v/mysql/conf.d/my.cnf

编辑my.cnf,设置自定义配置,如配置编码集为utf8mb4, 端口为3306

[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
character_set_server=utf8mb4
init_connect='SET NAMES utf8'
lower_case_table_names = 1

运行docker,并将挂载数据机指定的日志, 数据,配置目录到docker容器,实现数据持久化

# 运行docker, 本地127.0.0.1:3306 映射到容器的3306端口
docker run -p 127.0.0.1:3306:3306 \
-d --name mysql --restart=always \
-v /opt/docker_v/mysql/conf.d/:/etc/mysql/conf.d/ \
-v /opt/docker_v/mysql/logs:/var/log/mysql \
-v /opt/docker_v/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=password \
mysql:5.7.43

创建数据库

# 指定编码为utf8mb4
CREATE DATABASE  `testdb` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

创建用户并授权

# 创建用户
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
# 授权
GRANT all ON databasename.tablename TO 'username'@'%';

查看数据库字符集

show variables like "%character%";

docker环境下,无法输入中文

# 临时解决方法, 配置utf8编码
docker exec -it mysql env LANG=C.UTF-8 /bin/bash
# 永久配置可以修改Dockerfile,重新生成镜像
上一篇
下一篇