docker安装及配置MySQL

298

MySQL 8.0.18 docker安装方法

mysql官方image.png

本指南默认服务器已经安装好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;