docker安装及配置MySQL
MySQL 8.0.18 docker安装方法
本指南默认服务器已经安装好docker环境
安装命令
拉取image文件
docker pull mysql:8.0.18
配置宿主机环境
创建外挂data、config、logs文件夹
mkdir -p ~/docker_mnt/mysql/data
mkdir -p ~/docker_mnt/mysql/conf
mkdir -p ~/docker_mnt/mysql/logs
当然你可以合并成一条指令
mkdir -p ~/docker_mnt/mysql/data ~/docker_mnt/mysql/conf ~/docker_mnt/mysql/logs
生成配置文件
vi ~/docker_mnt/mysql/conf/myconf.cnf
配置文件内容如下:
# The MySQL Server configuration file.
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
[mysqld]
lower_case_table_names=1
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Custom config should go here
!includedir /etc/mysql/conf.d/
运行容器
通过特定docker指令,您可以在docker中运行MySQL
docker run -p 3306:3306 --name mysql -v ~/docker_mnt/mysql/conf:/etc/mysql/conf.d -v ~/docker_mnt/mysql/data:/var/lib/mysql -v ~/docker_mnt/mysql/logs:/logs -e MYSQL_ROOT_PASSWORD=YOUR_PASSWORD -d --restart=always mysql:8.0.18
血泪教训,如果你使用过上面的安装命令后,又执行过下面的停止和删除
docker stop mysql
docker rm mysql
重新安装MySQL时一定要记得清空外挂的data和logs里的文件
配置用户和数据库
安全起见,你肯定不想一个root闯天下吧
通过进入MySQL容器
docker exec -ti mysql bash
后面和普通的配置没区别了
mysql -uroot -p
创建用户
CREATE USER 'ruoxu'@'%' IDENTIFIED BY 'YOUR_PASSWORD';
创建数据库
CREATE DATABASE `nextcloud` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
给指定用户权限
GRANT ALL ON nextcloud.* TO 'ruoxu'@'%';
看情况吧,有的老版本php什么的,不支持新的认证方式,需要用下面的方式进行切换
ALTER USER 'ruoxu'@'%' IDENTIFIED WITH mysql_native_password BY 'YOUR_PASSWORD'
刷新权限
flush privileges;
导入SQL文件时的常见问题
设置允许的最大文件大小
set global log_bin_trust_function_creators=TRUE;
set global max_allowed_packet = 10*1024*1024*1024;