Docker安装mysql——Linux系统

发布于:2025-03-16 ⋅ 阅读:(15) ⋅ 点赞:(0)

拉取mysql镜像

docker pull mysql

查看镜像

docker images

运行镜像(这一步的作用:数据持久化,通过挂载卷将日志、数据和配置文件存储在主机上,避免容器删除导致数据丢失)

docker run -p 3306:3306 --name mysql --restart=always --privileged=true \
-v /usr/local/mysql/log:/var/log/mysql \
-v /usr/local/mysql/data:/var/lib/mysql \
-v /usr/local/mysql/conf:/etc/mysql \
-v /etc/localtime:/etc/localtime:ro \
-e MYSQL_ROOT_PASSWORD=123456 -d  mysql:latest

修改mysql配置(my.cnf文件)

[client]

default-character-set=utf8mb4

[mysql]

default-character-set=utf8mb4

[mysqld]

# 设置东八区时区
default-time_zone = '+8:00'

# 设置密码验证规则,default_authentication_plugin参数已被废弃

# 改为authentication_policy

#default_authentication_plugin=mysql_native_password
authentication_policy=mysql_native_password

# 限制导入和导出的数据目录
# 为空,不限制导入到处的数据目录;
# 指定目录,必须从该目录导入到处,且MySQL不会自动创建该目录;
# 为NULL,禁止导入与导出功能
#secure_file_priv=/var/lib/mysql
secure_file_priv=""

init_connect='SET collation_connection = utf8mb4_0900_ai_ci'

init_connect='SET NAMES utf8mb4'

character-set-server=utf8mb4

collation-server=utf8mb4_0900_ai_ci

skip-character-set-client-handshake

skip-name-resolve

重启mysql服务,使其配置生效

docker restart mysql

设置docker启动时启动mysql

docker update mysql --restart=always

授权远程访问,进入容器内部

docker exec -it mysql /bin/bash

登陆mysql

mysql -u root -p

选择数据库

show databases;
use mysql;

查看用户连接情况

select host, user, plugin,  authentication_string, password_expired from user;

 修改密码认证方式

ALTER USER root@'%' IDENTIFIED WITH mysql_native_password BY '123456';
ALTER USER root@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
FLUSH PRIVILEGES;-- 刷新权限

退出容器 

exit;


解决mysql连接客户端Navicat问题

连接mysql数据库

docker exec -it mysql bash

 连接服务器

mysql -u root -p

 查看当前所有数据库

show databases ;

进入mysql数据库

use mysql ;

查看mysql数据库中所有的表

show tables ;

查看user表中的数据

select Host, User  from user ;

修改user表中的Host

update user set Host='%' where User='root' ;

最后刷新一下

flush privileges ;


网站公告

今日签到

点亮在社区的每一天
去签到