您的位置:首页 > 运维架构 > Docker

1.Docker单机安装MySQL

2019-12-31 07:11 1516 查看

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

  • 1.前言
  • 2.拉取镜像
  • 3.配置mysql目录和my.cnf文件
  • 4.docker run mysql 4.1.简单启动
  • 4.2.使用my.cnf文件启动
  • 4.3.验证是否成功
  • 4.4 数据库管理

1.前言

docker安装就不介绍了,默认docker已经安装成功

服务器版本:CentOS Linux release 7.6.1810 (Core)

数据库版本:mysql:5.7.27

2.拉取镜像

>docker pull mysql:5.7.27

3.配置mysql目录和my.cnf文件

>mkdir -p /data/mysql

>cd /data/mysql

>mkdir conf data logs

>chmod -R 777 logs

> cd /data/mysql/conf

> touch my.cnf

> vim my.cnf

my.cnf配置文件如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

[mysqld]

port=3306

# 最大连接数

max_connections=16384

# 字符集

character-set-server=utf8mb4

# 存储引擎

default-storage-engine=INNODB

group_concat_max_len=102400

#开启慢查询:

slow_query_log=ON

#慢查询时间,单位秒

long_query_time=1

slow_query_log_file=/var/log/mysql/mysql-slow.log

#全局日志

general_log=ON

general_log_file=/var/log/mysql/mysql-general.log

#错误日志

log_error=/var/log/mysql/mysql-error.log

 

注意:slow_query_log_file、general_log_file、log_error其实是mysql容器内部目录,需要在启动容器时挂载到宿主机目录/data/mysql/logs中

 

4.docker run mysql

4.1.简单启动

> docker run --name mysql-5.7.27 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.27

  • --name mysql-5.7.27:mysql-5.7.27是容器名称,根据自己需要自行命名,见名知意即可
  • -p 3306:3306:前面3306是宿主机端口,后面3306是容器端口,-p 是将宿主机端口和容器端口进行映射
  • -e MYSQL_ROOT_PASSWORD=123456:设置mysql的root用户密码,可在启动后进入mysql容器进行修改root密码
  • -d mysql:5.7.27:用哪个镜像启动

4.2.使用my.cnf文件启动

注意:保证/data/mysql/conf有上面配置的my.cnf,并保证port没有使用过,可定义没有使用过的端口号:3307,3308....

> docker run --name mysql-5.7.27 --network=host -e MYSQL_ROOT_PASSWORD=123456 --privileged=true -v /data/mysql/conf:/etc/mysql -v /data/mysql/logs:/var/log/mysql -v /data/mysql/data:/var/lib/mysql -d mysql:5.7.27

说明:

  • --name mysql-5.7.27:mysql-5.7.27是容器名称,根据自己需要自行命名,见名知意即可
  • --network=host:指定容器的网络连接类型,支持 bridge/host/none/container四种类型
  • -e MYSQL_ROOT_PASSWORD=123456:设置mysql的root用户密码,可在启动后进入mysql容器进行修改root密码
  •  --privileged=true:给容器加特权
  •  -v /data/mysql/conf:/etc/mysql:挂载外部目录,指定mysql启动my.cnf位置
  •  -v /data/mysql/logs:/var/log/mysql:挂载mysql log志目录
  •  -v /data/mysql/data:/var/lib/mysql:挂载mysql数据data目录
  •  -d mysql:5.7.27 用哪个镜像启动

4.3.验证是否成功

>docker ps -a

status 如果是up则代表启动成功,若是下图则代表没有启动成功

运行下面命令查看日志,看报错信息

> docker logs -f mysql-5.7.27

或者进入/data/mysql/logs目录查看日志

  • mysql-error.log:启动日志,若没有启动成功,则会打印错误信息,没有错误,则打印成功信息
  • mysql-general.log:全局日志
  • mysql-slow.log:慢日志

运行下面命令,进入mysql容器内部

> docker exec -it mysql-5.7.27 bash

进入mysql命令端

> mysql -uroot -p123456

或者通过下面命令直接进入mysql命令端

 

4.4 数据库管理

  • 根据需要修改root初始密码:

set password for 'root'@'%' = password("newpassword");

flush privileges;   --刷新系统权限表

  • 指定ip访问数据库:

set password for 'root'@'xx.xx.xx.xx' = password("newpassword");

set password for 'root'@'192.168.%' = password("newpassword");

flush privileges;   

  • 创建用户:

create user 'username'@'%' identified by 'password';

flush privileges;   

  • 查询用户:

select host,user,authentication_string, plugin from mysql.user;

  • 展示用户有哪些数据库:

show grants for username;

show grants for 'city_user'@'192.168.32.%';

  • 创建数据库并制定字符集、排序规则

create database db01 default character set utf8mb4 collate utf8mb4_general_ci;

  • -- 分配用户数据库权限

grant all privileges on *.* to 'someuser'@'localhost'; -- 分配所有库

grant all privileges on dbname.* to 'someuser'@'%'; -- 分配某个库

grant all on *.* to 'someuser'@'%' identified by 'complex-password'; -- 分配所有权限

grant select on testdb.* to someone@'%'; -- 分配select

grant insert on testdb.* to someone@'%'; -- 分配insert

grant select, insert, update, delete on testdb.* to someone@'%'; -- 分配增删改查权限

flush privileges;   

  • 关闭全局日志

        mysql > show global variables like '%general%';

        mysql > set global general_log = off;

        mysql > flush privileges;   

        mysql > show global variables like '%general%';

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Docker MySQL