MySql教程

Linux上面docker部署MySQL8遇到的坑汇总

本文主要是介绍Linux上面docker部署MySQL8遇到的坑汇总,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

步骤一:docker安装MySQL8

下载mysql8镜像

docker pull mysql:8

创建mysql容器

mkdir /root
mkdir /root/mysql
mkdir /root/mysql/log/
mkdir /root/mysql/conf/
mkdir /root/mysql/data/
touch /root/mysql/my.cnf
my.cnf添加如下内容:
[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
secure_file_priv=/var/lib/mysql
expire_logs_days=7
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=1000

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

docker 运行命令

docker run -di -p 3306:3306 --privileged=true -v /root/mysql/log:/var/log/mysql -v /root/mysql/data:/var/lib/mysql -v /root/mysql/conf/:/etc/mysql -v /root/mysql/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:8 --lower-case-table-names=1

命令解释

-e MYSQL_ROOT_PASSWORD=root     //mysql数据库密码设置为root
--privileged=true   //容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限
--lower-case-table-names=1  //忽略大小写,docker mysql默认区分大小写的(这个必须要加上,不然会报错)

步骤二:解决问题

这时候使用会报错,初始化的密码并没有用

docker 安装报错 ERROR 1045 (28000): Access denied for user 'mysql'@'localhost' (using password: YES)解决方法

解决:

1:vi my.cnf文件,加入下面的内容

[mysqld]
skip-grant-tables

重启mysql服务。即可以mysql -u用户名 -p  登录进去。(注:docker需进入docker容器)

进入docker容器命令:

docker exec -it 容器id /bin/bash

2:更新root密码

select user,authentication_string from user;
update user set authentication_string=''  where user='root';

3:注释掉my.cnf 文件中的 skip-grant-tables

重新启动MySQL,并进入MySQL执行如下命令

alter user'root'@'%' IDENTIFIED BY 'Mysql@123'; 
alter user'root'@'localhost' IDENTIFIED BY 'Mysql@123'; 

flush privileges;

至此就差不多了

如果发现用mysql客户端SQLyog连接,报 连不上。

MYSQL 8.0内新增加mysql_native_password函数,通过更改这个函数密码来进行远程连接。更改ROOT用户的native_password密码

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY'Mysql@123';

执行完成。既可以连接了。

查看变量值:

SHOW VARIABLES LIKE 'lower%'; 
 

这篇关于Linux上面docker部署MySQL8遇到的坑汇总的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!