Docker搭建MySQL8过程记录

Posted by aclyyx on 11-19,2022

Docker 部分

  • 首先,确保系统中已安装有 Docker 环境;

  • 拉取 MySQL 8 镜像
    可以到【这里】查看具体需要的版本

docker pull mysql/mysql-server:8.0.4
  • 创建文件和文件夹

    • my.cnf 文件保存配置信息
    • data/ 数据库文件目录
  • 创建并启动容器

docker run -d --name mysql \
-p 3306:3306 \
-v /home/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-v /home/mysql/data:/var/lib/mysql \
mysql:8.0.4

MySQL 配置

Docker 容器启动后还需要对 MySQL 服务进行配置否则无法外部访问。

  1. 进入容器
    docker exec -it 容器id bash

  2. 登录mysql,默认情况下密码为空,直接回车即可
    mysql -u root -p

  3. 修改 root 用户密码

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';

FLUSH PRIVILEGES;
  1. 使用mysql数据表
    use mysql;

  2. 查看user表中的数据:
    select Host, User from user;

  3. 修改user表中的Host:
    update user set Host=‘%’ where User=‘root’;

  4. 此番操作后连接数据库服务提示错误:The user specified as a definer (‘mysql.infoschema’@‘localhost’),执行如下命令

create user 'mysql.infoschema'@'localhost' identified by '新密码';

grant all on *.* to 'mysql.infoschema'@'localhost';
  1. 又一番操作后,连接数据库服务提示错误:2013 - Lost connection to MySQL server at reading initial communication packet,修改my.cnf配置后重启 MySQL 服务
[mysqld]
character-set-server = utf8mb4
skip-name-resolve

其他

MySQL 8 查看锁表和表使用情况

show OPEN TABLES where In_use > 0; 

select * from performance_schema.data_locks;

select * from performance_schema.data_lock_waits;

参考

docker 安装mysql8详细说明
解决mysql8 Operation ALTER USER failed for ‘root’@’%‘
MySQL 8报错:The user specified as a definer (‘mysql.infoschema’@‘localhost’)
数据库-MySql 2013 - Lost connection to MySQL server at reading initial communication packet
mysql查询死锁表 Unknown table ‘INNODB_LOCKS‘ in information_schema