Docker安装服务-MySQL,修改密码,开发远程连接权限

15 篇文章 0 订阅

默认不建立目录映射

# docker 中下载 mysql
docker pull mysql:latest

#启动
# 一般来说数据库容器不需要建立目录映射

docker run -d -p 3306:3306 --name mysql-service -e MYSQL_ROOT_PASSWORD=root  mysql

#进入容器
docker exec -it mysql bash

#登录mysql
mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';

#添加远程登录用户
CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';

建立目录映射


# 建立目录映射 和 密码
docker run -p 3306:3306 --restart=always --name mysql \
-v /home/work/myspace/mysql/conf:/etc/mysql \
-v /home/work/myspace/mysql/logs:/var/log/mysql \
-v /home/work/myspace/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7 --lower_case_table_names=1

#进入容器
docker exec -it mysql bash
# 登录
mysql -u root -p
# 使用mysql库
use mysql;

update user set host='%' where user ='root';

# 刷新一下
flush privileges;

# 设置权限到root用户[不修改密码]
grant all privileges on *.* to 'root'@'%' with grant option;
# 赋予权限并修改密码
alter user 'root'@'%' identified with mysql_native_password by '123456';
# 刷新一下
flush privileges;

Docker参数说明:

-p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主
ip:3306 访问到 MySQL 的服务。
MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码。

启动报错常见问题

我这边使用最新的MySQL容器版本进行文件挂载启动:

docker run -p 3306:3306 --restart=always \
--name mysql-Master \
-v /home/work/myspace/mysqlMaster:/etc/mysql \
-v /home/work/myspace/mysqlMaster/logs:/logs \
-v /home/work/myspace/mysqlMaster/data:/var/lib/mysql/ \
-v /home/work/myspace/mysqlMaster/mysql-files:/var/lib/mysql-files \
-e MYSQL_ROOT_PASSWORD=root -d mysql \
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

按道理来说需要挂载/var/lib/mysql-files 就不会报错
容器一直重启,进去不了,使用命令:docker logs -tf --tail [条目数量] [容器id] 查看日志,于是就报错如下:

Failed to access directory for --secure-file-priv. Please make sure that directory exists and is accessible by MySQL Server. Supplied value : /var/lib/mysql-files 

在网上找到的问题,是因为安全性问题,借鉴:https://github.com/docker-library/mysql/issues/541

解决方法:

  1. 于是进入挂载容器:/etc/mysql的挂载目录:cd /home/work/myspace/mysqlMaster 创建文件:vi my.cnf
    在这里插入图片描述
  2. 文件内容如下:
[mysqld]
secure-file-priv= NULL

  1. 重启容器:docker restart mysql-Master
    问题解决
  2. 进入容器:docker exec -it mysql-Master bash
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小诺大人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值