Docker安装MySQL8
一、安装MySQL8
1、拉取官方的版本镜像,创建并启动 MySQL Server。
[aaa@qq.com ~]# docker pull mysql:8.0.21
[aaa@qq.com ~]# docker run -d --name mysql8 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.21
[aaa@qq.com ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
602d994f8e1a mysql:8.0.21 "docker-entrypoint.s…" 12 seconds ago Up 11 seconds 33060/tcp, 0.0.0.0:3307->3306/tcp mysql8
参数说明:
- -p 3307:3306 :映射容器服务的 3306 端口到宿主机的 3307 端口,外部主机可以直接通过 宿主机ip:3307 访问到 MySQL 的服务。
- -e:配置信息,此处 MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码。
2、安装成功
本机可以通过 root 和密码 123456 访问 MySQL 服务。
[aaa@qq.com ~]# docker exec -it 602d994f8e1a /bin/bash
[aaa@qq.com:/# mysql -h localhost -u root -P 3307 -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.21 MySQL Community Server - GPL
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';
+--------------------------+--------------------------------+
| Variable_name | Value |
+--------------------------+--------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql-8.0/charsets/ |
| collation_connection | latin1_swedish_ci |
| collation_database | utf8mb4_0900_ai_ci |
| collation_server | utf8mb4_0900_ai_ci |
+--------------------------+--------------------------------+
11 rows in set (0.01 sec)
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select host,User,plugin from user;
+-----------+------------------+-----------------------+
| host | User | plugin |
+-----------+------------------+-----------------------+
| % | root | caching_sha2_password |
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session | caching_sha2_password |
| localhost | mysql.sys | caching_sha2_password |
| localhost | root | caching_sha2_password |
+-----------+------------------+-----------------------+
5 rows in set (0.00 sec)
通过 Navicat工具连接
注意:
MySQL 8.0密码认证机制由之前的 mysql_native_password升级到新的caching_sha2_password加密规则。
如果 Navicat不支持mysql新版本的加密规则,是无法连接的,解决问题方法有两种:
- 1. 升级navicat驱动
- 2. 把mysql用户登录密码加密规则还原成 mysql_native_password加密规则
ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #修改加密规则 ,'password'改成你的密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; #更新下用户的密码 ,'password'是你的密码
FLUSH PRIVILEGES; #刷新权限
3、系统与日志访问
可以使用 docker logs 容器 指令查看 MySQL Server日志。
4、 使用数据卷,自定义MySQL配置文件
aaa@qq.com:/# cd /etc/mysql/
aaa@qq.com:/etc/mysql# ls
conf.d my.cnf my.cnf.fallback
官方文档说明:
当 MySQL 服务启动时会以 /etc/mysql/my.cnf 为配置文件,本文件会导入 /etc/mysql/conf.d 目录中所有以 .cnf 为后缀的文件。这些文件会拓展或覆盖 /etc/mysql/my.cnf 文件中的配置项。因此你可以创建你自己需要的配置文件并挂载至 MySQL 容器中的 /etc/mysql/conf.d 目录。
如果想要自定义配置,建议向 /etc/mysql/conf.d 目录中创建 .cnf 文件。文件名可以任意起名,只要保证后缀名是 cnf 即可。然后重启容器。
也可以在创建容器时,使用数据卷,自定义MySQL配置文件,然后将目录挂载至容器的 /etc/mysql/conf.d/目录即可。
实例:自定义配置文件/root/mysql8/config-file.cnf。然后将其挂载至容器的 /etc/mysql/conf.d/目录。
[aaa@qq.com mysql8]# cat config-file.cnf
# 客户端默认设置内容
[client]
# character_set_client=utf8
default-character-set=utf8
# 数据库自身的默认设置
[mysqld]
port=3308
character_set_server=utf8
collation-server=utf8_general_ci
# 使用mysql命令登录mysql数据库时的默认设置
[mysql]
default-character-set=utf8
创建并启动镜像,使用数据卷
[aaa@qq.com mysql8]# docker run -d --name mysql3308 -v /root/mysql8/:/etc/mysql/conf.d -p 13308:3308 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.21
48fea43f060b4f33537bcb33db1de07711e1010568a1f0f105a9381fed63890f
[aaa@qq.com mysql8]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
48fea43f060b mysql:8.0.21 "docker-entrypoint.s…" 9 seconds ago Up 7 seconds 3306/tcp, 33060/tcp, 0.0.0.0:13308->3308/tcp mysql3308
[aaa@qq.com mysql8]# docker exec -it 48fea43f060b /bin/bash
aaa@qq.com:/# mysql -u root -p
1. character_set_client
主要用来设置客户端使用的字符集。
2. character_set_connection
主要用来设置连接数据库时的字符集。
3. character_set_database
主要用来设置默认创建数据库的编码格式。
4. character_set_filesystem
文件系统的编码格式,把操作系统上的文件名转化成此字符集,即把 character_set_client转换character_set_filesystem, 默认binary是不做任何转换的。
5. character_set_results
数据库给客户端返回时使用的编码格式,如果没有指明,使用服务器默认的编码格式。
6. character_set_server
服务器安装时指定的默认编码格式。
7. character_set_system
数据库系统使用的编码格式,这个值一直是utf8,不需要设置,它是为存储系统元数据的编码格式。
8. character_sets_dir
这个变量是字符集安装的目录。
安装连接成功,就可以对 MySQL进行设置和操作使用啦。
—— Stay Hungry. Stay Foolish. 求知若饥,虚心若愚。
上一篇: Docker CE安装
下一篇: Python 中groupby方法运用