mysql 8.0 + 向所有IP 开放连接

一、数据库安装

linux 下载 安装 mysql 8.0+ (tar.xz)_ycsdn10的博客-CSDN博客

二、查看root相关信息

show databases;

use mysql;

select user,host from user;

##查看所有信息

select * from user where user = 'root' \G;

1.数据库列表: 

 2.用户

3.root相关

 

 可以看到有所有的权限了,如果没有待会可以设置

三、修改root的host向所有IP开放

## 更新的时候报主键冲突问题,则可能当前有两个root信息,则where条件为
## where user ='root' and host ='localhost'

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


select * from user where user = 'root'\G;

1.修改以后,可以到时候让所有IP进行请求 

2.或者

##我这边没有成功过,一直报错,估计8.0不一样 ,目前没有找到办法,只能用第一种方法
##或者grant all privileges on *.* to 'root'@'%';
grant all privileges on \*.* to 'root'@'%'  identified  by '123456';

flush privileges;

四、重启

重启命令,不清楚可以看第一步 

mysql.server restart

五、测试

mysql8.0 + 阿里云ECS 通过 workbench进行连接

### Docker中安装并配置MySQL 8.0以允许所有IP访问 #### 安装MySQL 8.0 可以通过Docker官方镜像来快速部署MySQL 8.0环境。以下是具体的命令: ```bash docker pull mysql:8.0 docker run --name=mysql8 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0 ``` 上述命令会拉取最新的MySQL 8.0镜像,并创建一个名为`mysql8`的容器,同时设置root用户的初始密码为`123456`。 为了验证容器是否正常运行,可执行以下命令: ```bash docker ps ``` 如果未正常启动,则可通过日志排查问题: ```bash docker logs mysql8 ``` --- #### 配置MySQL允许所有IP访问 ##### 修改绑定地址(bind-address) 默认情况下,MySQL只监听本地回环接口(127.0.0.1),需要将其改为监听所有网络接口(`0.0.0.0`)。 进入MySQL容器内部: ```bash docker exec -it mysql8 /bin/bash ``` 编辑MySQL配置文件 `/etc/mysql/my.cnf` 或者 `/etc/mysql/mysql.conf.d/mysqld.cnf` 文件中的 `bind-address` 参数[^3]: ```ini [mysqld] bind-address = 0.0.0.0 ``` 保存退出后重启MySQL服务使更改生效: ```bash service mysql restart ``` 注意:如果不挂载外部卷,默认的配置文件路径位于容器内的`/etc/mysql/`目录下。 --- ##### 设置用户权限支持远程访问 登录到MySQL数据库实例: ```bash mysql -u root -p ``` 执行SQL语句更新root用户的主机字段(host)为`%`(表示任意IP均可访问)[^1]: ```sql USE mysql; UPDATE user SET host='%' WHERE user='root'; FLUSH PRIVILEGES; ``` 此时,root账户可以从任何IP地址连接至该MySQL服务器。 --- #### 测试连接 在宿主机或其他机器上测试连接: ```bash mysql -h [容器IP] -P 3306 -u root -p ``` 其中 `[容器IP]` 是指Docker容器的实际IP地址,可以通过以下命令获取: ```bash docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mysql8 ``` 如果能够成功连接,则说明配置完成。 --- #### 安全注意事项 1. **禁用不必要的功能**:确保关闭了防火墙或者仅开放必要的端口。 ```bash systemctl stop firewalld systemctl disable firewalld ``` 2. **限制访问范围**:虽然设置了`host=%`,但在生产环境中应尽量限定特定IP或子网访问[^5]。例如: ```sql GRANT ALL PRIVILEGES ON *.* TO 'root'@'[指定IP]' IDENTIFIED BY 'password'; FLUSH PRIVILEGES; ``` 3. **启用SSL加密通信**:对于敏感数据传输场景,建议强制使用SSL连接。 4. **定期审计日志**:监控错误日志(error_log)和查询日志(general_log),及时发现潜在威胁。 --- ### 总结 通过调整`bind-address`参数以及赋予适当用户权限,可以在Docker环境下实现MySQL对所有IP地址的开放访问。然而,在实际应用过程中需特别关注安全性,防止因过度宽松策略引发的数据泄露风险。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值