linux docker下配置Mysql授权某个用户远程访问,不受ip限制

linux docker 配置mysql

前言

在navicat登录发现登录错误,原因是mysql没有用户或者用户权限不够请添加图片描述
所以应当进入容器添加足够权限的用户


linux docker视角下

1.进入容器
你的服务首先是正常运行的

docker exec -it <容器id> /bin/bash

2.登录mysql

mysql -u username -p

username 是自己的用户名
输入密码,该密码记录在docker-compose.yml中

3.用户管理

use mysql;

4.查看用户

select host,user from user;

这里会显示所有用户及权限

5.创建用户

(*.*是该用户可访问全部数据库,即完全访问权限,'%'表示所有IP)

GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;

flush privileges;

6.更新用户信息

### 安装并配置 Docker 中的 MySQL 支持远程连接 #### 配置 Docker 软件仓库 为了安装 Docker,在 CentOS 上可以先通过 `yum-config-manager` 添加 Docker 的官方软件仓库[^1]。 ```bash [root@localhost ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo ``` #### 启动 MySQL 容器 可以通过以下命令拉取并运行 MySQL 容器: ```bash docker run --name=mysql-server -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -d mysql:latest ``` 上述命令会创建一个名为 `mysql-server` 的容器,并设置 root 用户密码为 `root`,同时将主机的 3306 端口映射到容器内的 3306 端口[^2]。 #### 修改 MySQL 权限以支持远程访问 进入正在运行的 MySQL 容器内部环境后,登录 MySQL 数据库并对用户权限进行调整以便允许远程连接[^3]。 ##### 步骤一:进入 MySQL 容器 找到目标容器 ID 或名称并通过如下方式进入该容器: ```bash docker exec -it mysql-server /bin/bash ``` ##### 步骤二:登录数据库 执行以下命令来登录 MySQL 数据库: ```sql mysql -uroot -proot ``` ##### 步骤三:更改用户权限 更新用户的 host 属性使其能够接受来自任意 IP 地址的请求。例如,对于 root 用户可执行下面 SQL 命令之一: ```sql ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'your_new_password'; flush privileges; ``` 或者更简单的方式是重新定义密码: ```sql ALTER USER 'root'@'%' IDENTIFIED BY 'new_strong_password'; flush privileges; ``` #### 编辑 MySQL 配置文件 (my.cnf) 如果需要进一步优化绑定地址,则需编辑 `/etc/mysql/my.cnf` 文件中的 bind-address 参数改为监听所有网络接口(即设为 `bind-address=0.0.0.0`)。完成后重启服务即可生效。 最后确认防火墙已开放相应端口号以及 SELinux 设置不会阻止外部流量到达此服务器上的 MySQL 实例。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

石子君

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

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

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

打赏作者

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

抵扣说明:

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

余额充值