编辑
2024-12-15
学习
00

目录

1. 准备配置文件my.conf
2.编辑my.cnf
3.命令行启动容器

前情摘要:项目要上线到内网环境的麒麟V10的测试服务器上,在配置环境的时候,想着用docker跑一个mysql,却种种报错,好在一番折腾后最终得以解决,特此记一次docker安装mysql8

这里主要突出mysql的安装过程,所以前期工作,下载build好mysql.tar传输到服务器上的准备工作默认已经准备好了。

1. 准备配置文件my.conf

bash
sudo mkdir -p /usr/local/mysql/conf cd /usr/local/mysql/conf touch my.cnf

2.编辑my.cnf

bash
[mysql] #设置mysql客户端默认字符集 default-character-set=utf8mb4 [mysqld] # 数据库忽略大小写 lower_case_table_names = 1 #设置3306端口 port=3306 #允许最大连接数 max_connections=1000 #允许连接失败的次数。 max_connect_errors=10 #最大允许包 max_allowed_packet=10M #服务端使用的字符集默认为utf8mb4 character-set-server=utf8mb4 collation_server = utf8mb4_general_ci #创建新表时将使用的默认存储引擎 default-storage-engine=INNODB # mysql8中“mysql_native_password”插件认证不让用了,改成默认的caching_sha2_password # mysql8.4 中已经没有default_authentication_plugin变量了,要注释掉 # default_authentication_plugin=caching_sha2_password

3.命令行启动容器

检查文件权限,尽量使用root创建,避免一些不必要的权限拒绝问题。
注意:如果您使用已包含数据库的数据目录启动容器,则下面的任何变量都不会产生任何影响:任何预先存在的数据库在容器启动时始终保持不变。即:挂载的数据卷data目录要是空的,否则容易出现错误。 换句话说,就是运行出错了,每次docker run 之前都必须先清除一下/usr/local/mysql/data的内容,当然你也可以将整个mysql目录都删除掉,重新创建。

bash
cd /usr/local/ rm -rf mysql mkdir mysql cd mysql mkdir data mkdir log mkdir conf mkdir mysql-files
docker
docker run -d -p 3306:3306 \ --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/my.cnf:/etc/mysql/my.cnf \ -v /usr/local/mysql/mysql-files:/var/lib/mysql-files \ -v /etc/timezone:/etc/timezone:ro \ -v /etc/localtime:/etc/localtime:ro \ -e MYSQL_ROOT_PASSWORD=123456 \ -e TZ=Asia/Shanghai \ --name mysql mysql:latest

启动成功后,进入容器:

bash
docker exec -it mysql /bin/bash mysql -u root -p mysql> use mysql; mysql> select Host, User, plugin, authentication_string from user;

查询mysql账户,发现已经有root--%账户了,可以直接远程登陆了

如果没有的话,进去授权一下即可

mysql
mysql -u root -p use mysql; # 创建账号 CREATE USER 'root'@'%' IDENTIFIED WITH caching_sha2_password BY '新设置的密码'; # 授权 grant all privileges on *.* to 'root'@'%'; # 刷新权限 FLUSH PRIVILEGES;

然后就可以愉快用navicat远程连接访问啦,注意防火墙问题,看看网络通不通。

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:wjc

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 ‌CC BY-NC 许可协议。转载请注明出处!