Docker安装mysql无法远程客户端访问

在这里插入图片描述

可以看到箭头部分,该库的root用户只允许当前主机连接,所以要登录到数据库中,修改root的连接方式为‘%’
解决办法:
1进入到mysql容器内部
docker exec -it mysql_slave3 bash 注:mysql_slave3为容器名称或容器id
2登录mysql mysql -u -root -p

3登录成功后修改访问限制
mysql> grant all privileges on . to root@"%" identified by “password” with grant option;

OK,再次登录,访问成功!
————————————————
版权声明:本文为优快云博主「little_pig_lxl」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/little_pig_lxl/article/details/89509311

### Docker安装 MySQL 并配置远程连接 #### 1. 使用 `docker run` 命令启动容器 通过指定环境变量 `-e MYSQL_ROOT_PASSWORD` 设置 root 用户密码,并映射端口以暴露服务。以下是运行命令的具体说明: ```bash sudo docker run --name mysql-container \ -e MYSQL_ROOT_PASSWORD=your_password \ -p host_port:container_port \ -d mysql:mysql_version ``` 其中: - `--name mysql-container`: 指定容器名称。 - `-e MYSQL_ROOT_PASSWORD=your_password`: 配置 root 密码为 `your_password`[^3]。 - `-p host_port:container_port`: 将主机上的某个端口(如 3307)映射到容器内的默认 MySQL 端口 3306[^1]。 例如,如果希望将本地的 3307 映射至容器中的 3306,则可以执行如下命令: ```bash sudo docker run -itd --name docker-mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root mysql:8 ``` --- #### 2. 进入容器并登录 MySQL 进入正在运行的 MySQL 容器后,可以通过以下方式登录数据库管理工具: ```bash sudo docker exec -it mysql-container /bin/bash mysql -u root -p ``` 输入之前设置的 root 密码完成身份验证[^4]。 --- #### 3. 修改用户权限支持远程访问 为了使外部客户端能够成功连接到该实例,需要授予特定用户的远程访问权限。具体操作流程如下所示: ##### (a) 切换至 `mysql` 数据库 ```sql USE mysql; ``` ##### (b) 创建新用户或者更新现有用户的权限范围 假设目标是让 root 用户可以从任意 IP 地址 (`%`) 访问本机上的数据存储区,则可采用下面这条 SQL 语句来赋予相应权利: ```sql GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_password'; FLUSH PRIVILEGES; ``` 此步骤确保了即使来自不同网络位置也能正常建立会话链接[^2]。 --- #### 4. 测试远程连接功能 最后一步是从另一台机器尝试发起测试请求确认一切运作良好。比如利用 Python 脚本来模拟简单的查询过程作为例子展示如何构建跨设备间的交互逻辑: ```python import pymysql.cursors connection = pymysql.connect( host='server_ip', user='root', password='your_password', database='', port=host_port, ) try: with connection.cursor() as cursor: sql = "SHOW DATABASES;" cursor.execute(sql) result = cursor.fetchall() finally: connection.close() print(result) ``` 上述脚本展示了怎样借助 PyMySQL 库创建持久化通道进而获取当前可用的数据集合列表。 --- ### 注意事项 - 如果防火墙启用,请记得开放对应的服务端口号以便外界顺利抵达内部资源。 - 对于生产环境中部署敏感业务而言,建议仅限必要的子网地址而非通配符 `%` 来限定许可范畴从而提升安全性水平。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值