1. docker 启停命令
启动 : systemctl start docker
重启docker服务 systemctl restart docker
重启docker服务 sudo service docker restart
关闭 docker service docker stop
2.启动mysql
命令:docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql
3.数据库连接不上
3.1 防火墙问题
关闭防火墙重试
3.1.1 防火墙命令参考
查看防火墙状态:systemctl status firewalld
关闭防火墙: systemctl stop firewalld
打开防火墙: systemctl start firewalld
3.2 docker容器中MySQL权限问题
3.2.1 解决方案
连接数据库
docker exec -it mysql bash
mysql -uroot -p -h 192.168.122.1
2.授权
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
flush privileges;
GRANT:赋权命令
ALL PRIVILEGES:当前用户的所有权限
ON:介词
.:当前用户对所有数据库和表的相应操作权限
TO:介词
‘root’@’%’:权限赋给root用户,所有ip都能连接
IDENTIFIED BY ‘123456’:连接时输入密码,密码为123456
WITH GRANT OPTION:允许级联赋权
20200901:
将GRANT语句通过代码块包起来
3.刷新权限
flush privileges;
4.还不能远程访问,可能Navicat只支持旧版本的加密,需要更改mysql的加密规则
5.更改加密规则
ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘password’ PASSWORD EXPIRE NEVER;
6.更新root用户密码
ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘123456’;
7.刷新权限,问题解决?good luck
4.连接docker中MySQL截图
虚拟机ip
连接工具连接
mysql 8.0.11 用Navicat远程无法连接
症状:
安装了mysql 8.0.11 之后本地可以登录,但是远程第三方工具无法连接,防火墙已经放通的,
解决之道:
首先登陆到mysql命令行:
mysql -u root -p
进入之后选择mysql库,用户信息都存在这个库的user表中
use mysql;
select host, user, authentication_string, plugin from user
可以看到,用户对应的主机是localhost,而不是%,所以不能连接。
处理方法:
1、授权root用户可以远程登陆
GRANT ALL ON . TO ‘root’@’%’;
2、刷新权限
flush privileges;
3、修改加密规则
ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘yourpassword’ PASSWORD EXPIRE NEVER;
4、更新 root 用户密码
ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘yourpassword’;
5、刷新权限
FLUSH PRIVILEGES;
测试连接。用 Navicat 连接数据库就可以正常连接了。
另,给普通用户远程连接的权限:
1、授权 myuser 用户对指定库的所有表,所有权限并设置远程访问
GRANT ALL ON 指定库.* TO ‘myuser’@’%’;
2、更新 该 用户密码
ALTER USER ‘myuser’@’%’ IDENTIFIED WITH mysql_native_password BY ‘yourpassword’;
3.刷新权限
FLUSH PRIVILEGES;