MySQL5.7 增加用户,新建数据库,授权,远程访问

新增用户

用户名myuser 密码mypassword

mysql -u root -proot
CREATE USER ‘myuser’@‘localhost’ IDENTIFIED BY ‘mypassword’; #本地登录
CREATE USER ‘myuser’@’%’ IDENTIFIED BY ‘mypassword’; #远程登录
quit
mysql -u myuser -p #测试是否创建成功

如果出现以下问题,可以参考这个链接

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

为用户授权

a.授权格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by '密码';

b.登录MYSQL,这里以ROOT身份登录:

c.为用户创建一个数据库(testDB):

create database testDB default charset utf8 collate utf8_general_ci;

d.授权test用户拥有testDB数据库的所有权限:

grant all privileges on testDB.* to ‘myuser’@‘localhost’ identified by ‘mypassword’; 本地授权
grant all privileges on testDB.* to ‘myuser’@’%’ identified by ‘mypassword’; 远程授权
flush privileges; #刷新系统权限表

e.指定部分权限给用户:

grant select,update on testDB.* to ‘myuser’@‘localhost’ identified by ‘mypassword’;
flush privileges; #刷新系统权限表

作者:梨花菜
链接:https://www.jianshu.com/p/5c30b0db1ea0
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

<think>好的,我现在需要帮助用户解决如何配置MySQL 5.7允许远程连接的问题。首先,我需要回顾用户提供的引用内容,看看里面有没有相关的步骤或方法。用户引用了四个来源,其中引用[1]、[2]、[3]、[4]都提到了远程连接的问题,特别是如何开启授权和解决错误。 首先,用户的问题是如何配置MySQL 5.7允许远程连接。根据引用内容,可能需要以下步骤: 1. 登录MySQL数据库,可能需要使用root用户。 2. 修改用户权限,允许从远程主机访问。引用[3]提到进入mysql库,使用user表,可能需要更新host字段为%或者特定IP。 3. 刷新权限,使更改生效。 4. 检查防火墙设置,比如CentOS7的firewalld是否放行了3306端口,引用[4]提到了启动服务,可能涉及到防火墙配置。 5. 修改MySQL配置文件,注释掉bind-address或者设置监听所有IP,引用[2]提到skip-networking的问题,可能需要调整配置文件。 6. 重启MySQL服务,应用配置更改,如引用[4]中的启动服务命令。 接下来,我需要确保这些步骤的正确性和顺序。首先,用户需要登录MySQL,可能需要初始密码,根据引用[4],安装后可能有临时密码,需要处理。然后授权用户,比如使用GRANT命令,或者直接更新user表,这在引用[3]中提到了select host,user from user,可能原来的host是localhost,需要改为%。同时,可能需要FLUSH PRIVILEGES来生效权限,这在引用[3]中也有提到。 然后是防火墙部分,CentOS7默认使用firewall-cmd,需要开放3306端口,或者关闭防火墙测试,但生产环境不建议关闭。接着是MySQL配置文件,通常在/etc/my.cnf或/etc/mysql/my.cnf,需要找到bind-address 127.0.0.1注释掉,或者改为0.0.0.0,这样MySQL会监听所有接口。引用[2]中的10061错误可能和网络配置有关,比如bind-address设置不正确或者防火墙问题。 另外,用户可能遇到的一些问题,比如MySQL 5.7默认只允许本地连接,所以必须显式授权远程访问。同时,密码策略可能需要符合要求,比如在MySQL 5.7中,密码可能需要包含大小写字母、数字和特殊字符,否则授权可能失败。 现在需要把这些步骤整理成一个清晰的流程,分步骤说明,确保用户能够按照操作。同时需要注意可能的错误点,比如忘记刷新权限,或者防火墙未正确配置,导致即使MySQL配置正确也无法连接。还要提醒用户安全性问题,比如不要使用root用户远程连接,而是创建专用用户限制访问IP范围,以增强安全性。 最后,根据用户提供的引用,特别是引用[3]中的步骤,可能需要具体的SQL命令示例,比如GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'password'; 但需要注意MySQL 5.7创建用户授权可能需要分开执行,比如先CREATE USER再GRANT,或者使用GRANT同时创建用户。此外,如果用户已经存在,可能需要UPDATE user SET host='%' WHERE user='username'; 然后FLUSH PRIVILEGES; 总结步骤应该是: 1. 修改MySQL配置文件,允许监听远程连接。 2. 登录MySQL创建或修改用户权限,允许远程主机访问。 3. 刷新权限。 4. 配置防火墙开放3306端口。 5. 重启MySQL服务。 6. 测试远程连接。 需要检查每个步骤是否正确,比如配置文件的路径是否正确,是否有语法错误,用户权限是否正确授予,防火墙规则是否生效等。同时,可能还需要处理SELinux的问题,但引用中没有提到,可能用户没有开启,或者需要额外步骤,但暂时先不考虑,除非用户遇到问题。 现在需要将这些步骤用中文清晰写出,结构分明,且引用相关的引用来源,比如在修改用户权限时引用[3],在防火墙配置时引用[4]和[2]。同时,生成相关问题,如如何创建MySQL用户、如何检查端口监听、如何处理连接错误等。</think>### 如何配置MySQL 5.7允许远程连接? #### 步骤说明 1. **修改MySQL配置文件** 打开MySQL配置文件`/etc/my.cnf`或`/etc/mysql/mysql.conf.d/mysqld.cnf`,找到以下行注释或修改: ```bash # bind-address = 127.0.0.1 ``` 改为: ```bash bind-address = 0.0.0.0 # 或直接注释此行 ``` 保存后重启MySQL服务: ```bash systemctl restart mysqld ``` 此操作使MySQL监听所有网络接口[^2][^4]。 2. **登录MySQL授权远程访问** 使用root用户登录: ```bash mysql -u root -p ``` 执行以下SQL命令(以用户`root`为例,建议使用专用用户): ```sql -- 创建用户(若需新建用户) CREATE USER 'remote_user'@'%' IDENTIFIED BY 'SecurePassword123!'; -- 授予权限 GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION; -- 刷新权限 FLUSH PRIVILEGES; ``` 若已有用户,可直接修改权限: ```sql UPDATE mysql.user SET host='%' WHERE user='remote_user'; FLUSH PRIVILEGES; ``` [^3][^1] 3. **配置防火墙开放3306端口** ```bash firewall-cmd --permanent --add-port=3306/tcp firewall-cmd --reload ``` 或临时关闭防火墙测试: ```bash systemctl stop firewalld # 仅测试用,生产环境需谨慎 ``` [^2] 4. **验证远程连接** 使用客户端工具(如Navicat或命令行)尝试连接: ```bash mysql -h <服务器IP> -u remote_user -p ``` 若失败,检查错误代码(如10061通常为网络或配置问题)。 --- #### 注意事项 - **安全性**:避免直接授权`root`用户远程访问,建议创建专用用户限制IP范围(如`'remote_user'@'192.168.1.%'`)。 - **密码强度**:MySQL 5.7默认要求强密码,需包含大小写字母、数字和特殊字符。 - **SELinux**:若启用,需额外配置策略或临时禁用: ```bash setenforce 0 # 临时关闭 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值