欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Docker安装MySQL8

程序员文章站 2024-03-25 13:38:46
...

一、安装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工具连接

Docker安装MySQL8

注意:

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日志。

Docker安装MySQL8

 

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 目录。
Docker安装MySQL8

 

如果想要自定义配置,建议向 /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

Docker安装MySQL8

Docker安装MySQL8

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. 求知若饥,虚心若愚。