docker下登陆mysql错误_docker下的mysql安装及问题解决

1、下载镜像 docker pull mysql

2、普通安装:

创建mysql容器,并后台启动

docker run -d -p 3306:3306 -e MYSQL_USER="zy" -e MYSQL_PASSWORD="123456" -e MYSQL_ROOT_PASSWORD="123456" --name mysqltest1 mysql --character-set-server=utf8 --collation-server=utf8_general_ci

参数说明:

-e MYSQL_USER=”woniu” :添加woniu用户

-e MYSQL_PASSWORD=”123456″:设置添加的用户密码

-e MYSQL_ROOT_PASSWORD=”123456″:设置root用户密码

–character-set-server=utf8:设置字符集为utf8

–collation-server=utf8_general_cli:设置字符比较规则为utf8_general_cli

3、挂载外部配置和数据

(1)创建文件夹

mkdir usr/local/docker_local

mkdir usr/local/docker_local/mysql

mkdir usr/local/docker_local/mysql/conf

mkdir usr/local/docker_local/mysql/data

(2)先不挂载数据卷启动容器 docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql

(3)启动后进入容器 docker exec -it 容器ID /bin/bash

(4)查看my.cnf 文件,并把它的内容复制出来暂且放到一个记事本 cat /etc/mysql/my.cnf

(5)退出容器 exit (可以把这个容器删了 docker rm -f 容器ID)

(6)在usr/local/docker_local/mysql/conf下创建文件my.cnf,把刚才复制的内容粘贴进去

(7)在usr/local/docker_local/mysql下,启动一个容器

docker run -d -p 3306:3306 --privileged=true -v $PWD/conf/my.cnf:/etc/mysql/my.cnf -v $PWD/data:/var/lib/mysql -e MYSQL_USER="zy" -e MYSQL_PASSWORD="zy123" -e MYSQL_ROOT_PASSWORD=123456 --name mysqltest2 mysql

解释:$PWD 为当前所在路径,即usr/local/docker_local/mysql

4、进入容器后,验证 mysql -u root -p, 密码为123456

5、此处记录验证mysql登陆失败解决方法:

(1)退出容器,由于my.cnf已经挂载,到usr/local/docker_local/mysql/conf编辑 my.cnf,后面加一行 skip-grant-tables # 表示不验证密码登录

(2)重启容器(等于重启mysql),进入容器,mysql -u root -p,此时随便输个密码都可以登录mysql

(3)修改密码,注意,mysql8之前的和之后的,修改密码不一样

mysql8+ :① use mysql; ② FLUSH PRIVILEGES; ③ ALTER user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root123456',此时会提示修改成功

mysql8- :set password for root@localhost = password('root')

(4)退出容器,到usr/local/docker_local/mysql/conf编辑 my.cnf把刚加的skip-grant-tables 删掉

(5)重启容器

6、远程连接数据库:

错误代码:1130

原因:在mysql库,user表,root用户的host字段为localhost

解决;将该字段改为 %

命令:

mysql -u root -p

mysql>use mysql;

mysql>update user set host = '%' where user ='root';

mysql>flush privileges;

mysql>select host,user from user where user=’root’;

此时就可以连接成功了!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值