mysql 创建用户并赋予所有权限使得远程可以访问(1045 1130 报错)

本文介绍了MySQL中常见的1045和1130错误及其解决方案,包括如何通过修改user表或使用GRANT命令来允许远程主机访问数据库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


标签: mysql数据库
  9222人阅读  评论(0)  收藏  举报

1045报错:

GRANT ALL PRIVILEGES ON *.* TO ceshi@"%" IDENTIFIED BY "ceshi"; 
FLUSH PRIVILEGES;

执行上面两句话。自动创建用户zhangs,密码lisi

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

@ 后面是访问MySQL的客户端IP地址(或是 主机名) % 代表任意的客户端,如果填写 localhost 为本地访问(那此用户就不能远程访问该mysql数据库了)。


1130报错:

ERROR 1130: Host '192.168.1.3' is not allowed to connect to thisMySQL server 

解决方法: 
1。改表法。可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改"mysql" 数据库里的 "user" 表里的 "host"项,从"localhost"改称"%" 

mysql -u root -pvmwaremysql>usemysql;mysql>update user set host = '%' where user ='root';mysql>select host, user from user; 

2.授权法。例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。 

GRANT ALL PRIVILEGES ON *.* TO IDENTIFIED BY 'mypassword' WITHGRANT OPTION; 
如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码 
GRANT ALL PRIVILEGES ON *.* TO IDENTIFIED BY'mypassword' WITH GRANT OPTION;  

连接 MySQL 数据库时遇到错误 `1130`,通常是因为权限配置不当导致客户端无法从特定主机访问数据库。以下是对此问题的具体分析及解决步骤: ### 错误原因 MySQL用户账户不仅由用户名标识,还绑定到具体的主机地址上。如果尝试通过非授权的 IP 地址或主机名连接,则会触发此错误。 例如: 假设有一个名为 `test_user@localhost` 的账户,在本地可以正常登录。但如果从远程服务器(如 `remote_host` 或某个公网IP)发起连接请求,而该用户未被明确赋予相应的权限,就会报出 **ERROR 1130 (HY000): Host 'your_ip_address' is not allowed to connect to this MySQL server**。 --- ### 解决方案 #### 方案一:修改用户权限设置 进入 MySQL 命令行工具作为管理员登录,执行以下命令之一来更改指定用户权限范围: ```sql -- 允许来自所有 IP 的访问 GRANT ALL PRIVILEGES ON *.* TO 'your_username'@'%' IDENTIFIED BY 'password'; -- 或者仅允许某固定外部 IP 访问 GRANT ALL PRIVILEGES ON *.* TO 'your_username'@'client_ip' IDENTIFIED BY 'password'; ``` 注意替换上述 SQL 中占位符的实际值: - `'your_username'`: 想调整限制的那个具体用户名; - `'%'` 表示任意来源机器都可以连入;如果是精确控制则换为实际目标客户端 IP (`client_ip`); - `'password'` 即对应用户的密码字符串。 完成赋权操作之后记得刷新权限表生效: ```sql FLUSH PRIVILEGES; ``` #### 方案二:检查 bind-address 配置项 有时候服务端默认只监听本机回环地址(`127.0.0.1`) ,需要编辑 my.cnf 文件解除这个约束: 找到注释掉或者将 `bind-address=127.0.0.1` 改成接受外网连接的形式比如 `0.0.0.0` 后保存重启 mysqld进程即可. ```ini [mysqld] # 注释下面这句或将它改为更宽泛的内容以开放网络接入能力 # bind-address = 127.0.0.1 bind-address = 0.0.0.0 ``` 最后别忘了防火墙规则是否阻止了相应端口(通常是3306)的数据包流通. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值