文章目录
- 1、通过Docker运行msyql8
- 2、进入容器配置mysql远程连接
- 3、通过Navicat远程访问mysql
1、通过Docker运行msyql8
mkdir -p /home/mysql8/data /home/mysql8/config /home/mysql8/logsdocker run -d \
--name mysql8 \
--privileged=true \
--restart=always \
-p 3310:3306 \
-v /home/mysql8/data:/var/lib/mysql \
-v /home/mysql8/config:/etc/mysql/conf.d \
-v /home/mysql8/logs:/logs \
-e MYSQL_ROOT_PASSWORD=123456 \
-e TZ=Asia/Shanghai mysql:8.0.27 \
--lower_case_table_names=1
–name mysql8:给容器命名
–privileged=true:给予容器额外的权限。这意味着容器将拥有主机系统的所有权限
–restart=always:服务器启动时,自启动
-p 3310:3306:端口映射,第一个 3310 是映射出去的端口,第二个 3306 是这个容器的端口
-v /home/mysql8/data:/var/lib/mysql:文件挂载, 前为宿主机的目录位置,后为容器内文件对应位置
-e MYSQL_ROOT_PASSWORD=123456:环境变量设置,此处是设置 ROOT 用户登录密码
-e TZ=Asia/Shanghai mysql:此处是设置 MySQL 的时区。
–lower_case_table_names=1:让表名忽略大小写
注意端口占用情况,netst -ano | findstr 3306
2、进入容器配置mysql远程连接
docker exec -it [容器名|容器id] bash
mysql -uroot -p
SELECT user, host FROM mysql.user;
#配置root远程连接,如果没有'root'@'%'用户,修改'root'@'localhost' 为'root'@'%'
update mysql.user set host = '%' where host = 'localhost' and user = 'root';
flush privileges;
# 修改root用户的密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;或者创建新用户并赋予权限
CREATE USER 'fox'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'fox'@'%';
flush privileges;
注:如果使用客户端连接提示了plugin caching_sha2_password错误,这是因为MySQL8.0的密码策略默认为caching_sha2_password(MySQL5.7无此问题)
update user set plugin = ‘mysql_native_password’ where user = ‘root’;flush privileges; # 刷新权限 权限更新后刷新才会起作用