1.安装mysql8
下载MySQL镜像
docker pull mysql:8.0
创建并启动容器
docker run -itd --name mysqltest -p 9999:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
其中-it是交互界面 -d是后台执行 -name 指定容器名称
-p指定映射端口 -e设置环境变量 最后mysql是镜像名或者用镜像id
如果这条命令报错就重启docker再执行命令
原因:
docker服务启动时定义的自定义链DOCKER由于 centos7 firewall 被清掉
firewall的底层是使用iptables进行数据过滤,建立在iptables之上,这可能会与 Docker 产生冲突。
当 firewalld 启动或者重启的时候,将会从 iptables 中移除 DOCKER 的规则,从而影响了 Docker 的正常工作。
当你使用的是 Systemd 的时候, firewalld 会在 Docker 之前启动,但是如果你在 Docker 启动之后再启动 或者重启 firewalld ,你就需要重启 Docker 进程了。
重启docker服务及可重新生成自定义链DOCKER
这个1110就是本地对应的端口,访问这个会映射刀容器里的3306 好理解把
2.使用dbeaver连接
emo,报错了 我靠
右键数据库——》编辑连接——》驱动属性——将“allowPublicKeyRetrieval
”设置为true
再次连接成功了 注意端口是1110
确实比单独安装mysql服务器快多了,真真是快速部署
3.创建一个mysql远程用户
注意容器退出的时候用ctrl+p+q哦,用exit会停止容器
进入容器
docker exec -it mysqltest /bin/bash
进入数据库
mysql -uroot -p123456
创建一个远程连接用户
use mysql
创建本地用户
# 创建一个用户名为admin,密码为 admin123456 的本地用户。
create user 'admin'@'localhost' identified by 'admin123456';
grant all privileges on *.* to 'admin'@'localhost';
flush privileges;
创建外网可访问用户
# 创建一个用户名为adminwai,密码为 admin123456 的本地用户
create user 'adminwai'@'%' identified by 'admin123456';
grant all privileges on *.* to 'adminwai'@'%';
flush privileges;
本地用户不能远程访问哦,远程用户才可以哦 用这个adminwai用户
其他操作忽略
修改用户
#将用户名 admin 更新为 admin_newm
rename user 'admin'@'localhost' to 'admin_new'@'localhost';
#将用户名 admin 更新为 admin_newm
update user set User='admin_new' where User='admin' and Host='localhost';
# 刷新授权才会生效
flush privileges;
删除用户
drop user 'admin'@'localhost';
flush privileges;
操作用户权限
查看用户权限
show grants for 'admin'@'localhost';
修改用户权限
# 使admin用户获得所有权限。
grant all privileges on *.* to 'admin'@'localhost';
# 使admin用户获得所有数据库中所有表的(*.*)select、insert、update、delete权限
grant select,insert,update,delete on *.* to 'admin'@'localhost';
# 如果只想让该用户访问某一个数据库写成:testdb.* 即可
grant all privileges on testdb.* to 'admin'@'localhost';
# 刷新授权才会生效
flush privileges;
修改密码
# 修改admin用户的密码
ALTER USER 'admin'@'localhost' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY 'admin123456';
# 刷新授权才会生效
flush privileges;