首页 行业资讯 宠物日常 宠物养护 宠物健康 宠物故事
您的当前位置:首页正文

mysql禁止远程访问的解决办法

2023-11-11 来源:画鸵萌宠网

 

 

 

mysql>flush privileges;mysql>select host, user from user;

 

 

 

mysql>quit

 

推荐使用该表法   可能会遇到的问题是  ERROR 1062 (23000): Duplicate entry ‘%-root‘ for key ‘PRIMARY‘

host已经有了%这个值,所以直接运行命令: 复制代码 代码如下:MySQL>flush privileges; 

 

亲测好用-------------------------------------

 

 

 

 

2. 授权法。例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。GRANT ALL PRIVILEGES ON *.* TO ‘myuser‘@‘%‘ IDENTIFIED BY ‘mypassword‘ WITH GRANT OPTION;FLUSH PRIVILEGES;如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器,并使用mypassword作为密码GRANT ALL PRIVILEGES ON *.* TO ‘myuser‘@‘192.168.1.3‘ IDENTIFIED BY ‘mypassword‘ WITH GRANT OPTION;FLUSH PRIVILEGES;如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器的dk数据库,并使用mypassword作为密码GRANT ALL PRIVILEGES ON dk.* TO ‘myuser‘@‘192.168.1.3‘ IDENTIFIED BY ‘mypassword‘ WITH GRANT OPTION;FLUSH PRIVILEGES;我用的第一个方法,刚开始发现不行,在网上查了一下,少执行一个语句 mysql>FLUSH RIVILEGES 使修改生效.就可以了另外一种方法,不过我没有亲自试过的,在csdn.net上找的,可以看一下.在安装mysql的机器上运行:1、d:mysqlin>mysql -h localhost -u root //这样应该可以进入MySQL服务器2、mysql>GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ WITH GRANT OPTION //赋予任何主机访问数据的权限3、mysql>FLUSH PRIVILEGES //修改生效4、mysql>EXIT //退出MySQL服务器这样就可以在其它任何的主机上以root身份登录啦!

mysql禁止远程访问的解决办法

标签:sel   语句   mil   更改   war   roo   用户   网上   entry   

小编还为您整理了以下内容,可能对您也有帮助:

如何让mysql数据库允许被远程连接访问?就是从其他的电脑连接我的电脑上的mysql

第一:更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改称'%'。

或者新加条记录,“host” 项为要访问的ip地址,并授权。重启mysql服务。

第二:在系统防火墙添加例外端口:3306,并允许例外。

错误提示:

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

的解决方法:

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

1.mysql -u root -pvmware

mysql>use mysql;

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

mysql>select host, user from user;

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

GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码

GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

3.在window自带的防火墙里的例外添加3306端口

总结:

mysql -u root -p

mysql>use mysql;

mysql>select 'host' from user where user='root';

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

mysql>flush privileges;

mysql>select 'host' from user where user='root';

第一句是以权限用户root登录

第二句:选择mysql库

第三句:查看mysql库中的user表的host值(即可进行连接访问的主机/IP名称)

第四句:修改host值(以通配符%的内容增加主机/IP地址),当然也可以直接增加IP地址

第五句:刷新MySQL的系统权限相关表

第六句:再重新查看user表时,有修改。。

重起mysql服务即可完成。

怎么解决mysql不允许远程连接的错误

解决办法如下:

1、在服务器端,打开cmd窗口,进入mysql 安装目录bin 下,输入mysql -u root -p,然后回车,输入密码后回车进入mysql命令行。

2、输入use mysql;

3、输入select user,host from user;

可以看到host中只有localhost主机。我们需要将xxx.xxx.xxx.xxx也添加到这里才对。

4、

添加方法如下:

输入

grant all privileges on *.* to root@"xxx.xxx.xxx.xxx" identified by "密码";

这相当于是给IP-xxx.xxx.xxx.xxx赋予了所有的权限,包括远程访问权限。

然后再输入

flush privileges;

这相当于是重新加载一下mysql权限,这一步必须有。

5、再次输入select user,host from user;

可以看到host中已经有了新加的IP。

6、再次在客户端用Navicat for MySQl访问远程mysql数据库,已经能正常打开了。

参考链接:http://jingyan.baidu.com/article/b907e627b0e3b846e7891cc9.html

为啥mysql为啥本地能访问,远程不能访问

如果还是不行,有可能防火墙的问题

查看防火墙是否开启了3306端口

技术分享

如果没有3306这个端口,就添加上去

 vi /etc/sysconfig/iptables 

-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT(允许80端口通过防火墙) 
-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT(允许3306端口通过防火墙) 
特别提示:很多网友把这两条规则添加到防火墙配置的最后一行,导致防火墙启动失败,正确的应该是添加到默认的22端口这条规则的下面


mysql远程链接不上,本地可以链接

标签:

为啥mysql为啥本地能访问,远程不能访问

如果还是不行,有可能防火墙的问题

查看防火墙是否开启了3306端口

技术分享

如果没有3306这个端口,就添加上去

 vi /etc/sysconfig/iptables 

-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT(允许80端口通过防火墙) 
-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT(允许3306端口通过防火墙) 
特别提示:很多网友把这两条规则添加到防火墙配置的最后一行,导致防火墙启动失败,正确的应该是添加到默认的22端口这条规则的下面


mysql远程链接不上,本地可以链接

标签:

怎么解决mysql不允许远程连接的错误

有两种方法,一种方法使用mysql的check table和repair table 的sql语句,另一种方法是使用MySQL提供的多个myisamchk, isamchk数据检测恢复工具。前者使用起来比较简便。推荐使用。

1. check table 和 repair table

登陆mysql 终端:

mysql -uxxxxx -p dbname

check table tabTest;

如果出现的结果说Status是OK,则不用修复,如果有Error,可以用:

repair table tabTest;

进行修复,修复之后可以在用check table命令来进行检查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。

2. myisamchk, isamchk

其中myisamchk适用于MYISAM类型的数据表,而isamchk适用于ISAM类型的数据表。这两条命令的主要参数相同,一般新的系统都使用MYISAM作为缺省的数据表类型,这里以myisamchk为例子进行说明。当发现某个数据表出现问题时可以使用:

myisamchk tablename.MYI

进行检测,如果需要修复的话,可以使用:

myisamchk -of tablename.MYI

关于myisamchk的详细参数说明,可以参见它的使用帮助。需要注意的时在进行修改时必须确保MySQL服务器没有访问这个数据表,保险的情况下是最好在进行检测时把MySQL服务器Shutdown掉。

-----------------------------

另外可以把下面的命令放在你的rc.local里面启动MySQL服务器前:

[ -x /tmp/mysql.sock ] && /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI

其中的/tmp/mysql.sock是MySQL监听的Sock文件位置,对于使用RPM安装的用户应该是/var/lib/mysql/mysql.sock,对于使用源码安装则是/tmp/mysql.sock可以根据自己的实际情况进行变更,而pathtochk则是myisamchk所在的位置,DATA_DIR是你的MySQL数据库存放的位置。

需要注意的时,如果你打算把这条命令放在你的rc.local里面,必须确认在执行这条指令时MySQL服务器必须没有启动!检测修复所有数据库(表)

Mysql无法远程连接,要如何解决

原因是MySQL默认不支持远程连接,(那么phpMyAdmin为什么可以连接呢?那是因为phpMyadmin的环境是上传到服务器的,其本身访问数据库是相当于本机localhost访问的),如果想远程访问,可以使用下面的方法来解决。

远程连接mysql数据库时出现如下提示信息:“MYSQL CONNECT ERROR – 1130:Host ’202.43.**.**’ is not allowed to connect to this MySQL server”

在创建mysql账户时,*连接账户远程登录。也就是说,除了当前mysql所在的安装服务器外,其他的ip(主机)都是不允许访问的,即使你的用户名和密码是正确的。这时候就要修改用户的访问权限。

首先是用root用户登录到mysql的安装主机,然后进入mysql:

mysql -u root -p

root是mysql的最高授权用户名,这时会提示你输入密码,正确输入密码后回车,进入mysql。回车

然后输入如下命令:

grant all on 数据库名.* to ‘数据库账户名’@’%’ identified by ‘密码’ with grant option;


回车

flush privileges;

回车
注意:上面的单引号不能省,数据库名.* 表示要开放的数据库下所有表,如果该连接的所有数据库都要开放,可以用 *.* 代替。
‘数据库账户名’@’%’ 这里表示要开放的账户,百分号表示在任何主机都允许访问。
如果以上两步均显示 “Query OK, 0 rows affected (0.00 sec)”,那么说明命令已经成功执行,现在就可以远程连接你的mysql数据库了。

(1).如果想赋予所有操作的权限

grant all on ... to 用户名......

(2).如果想赋予操作所有数据库的所有表的权限

grant ... on *.* to 用户名......

(3).如果想赋予某个数据库的所有表

grant ... on 数据库名称.'*' to 用户名...... ([ * ]两边一定要加单引号)

(4).如果想赋予某个数据库的某张表

grant ... on 数据库名称.表名 to 用户名......

(5).如果想任何客户端都能通过该用户名远程访问

grant ... on ... to 用户名@% ....... (要把IP地址改成[ % ])

(6).改完了以后一定要重新启动MySQL服务

用户会存到Mysql服务器上的user表中,所以下面的两种方法都可以解决这个问题:

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

mysql -u root -p

mysql>use mysql;

mysql>update user set host = ’%’ where user = ’root’;mysql>select host, user from user; 

mysql>flush privileges;

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

GRANT ALL PRIVILEGES ON *.* TO ’myuser’@’%’ IDENTIFIED BY ’mypassword’ WITH GRANT OPTION; 

如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码

GRANT ALL PRIVILEGES ON *.* TO ’myuser’@’192.168.1.3’ IDENTIFIED BY ’mypassword’ WITH GRANT OPTION;

如果还是无法远程我们可参考

1、Mysql的端口是否正确,通过netstat -ntlp查看端口占用情况,一般情况下端口是3306。在用工具连接MySQl是要用到端口。例如My AdminMy Query BrowserMySQl Front等。

2、检查用户权限是否正确。
例如:用户Tester,user表里有两条记录:host分别为localhost和%(为了安全,%可以换成你需要外部连接的IP)。


3、查看/etc/my.cnf中,skip-networking 是否已被注掉,需要注掉。
报错:ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.51.112' (111)


4、查看iptables是否停掉,没关的情况下,无法连接。
通过:service iptables stop临时关闭。
报错:ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.51.112' (113)

另外,我们还可以通过配置http通道来使Navicat远程连接到数据库,这样做的好处是不需要前面繁杂的配置。在主机名IP地址那里填写LocalHost

用户名与密码一栏则填写你所在的数据库用户名与密码。

这时候还不能连接数据库的,需要通过Http通道的形式进行数据库连接。

点击连接属性标签栏中的Http,如下图所示:

勾选使用Http通道后,在通道地址一栏输入你的网址与后台文件地址。

Mysql无法远程连接,要如何解决

原因是MySQL默认不支持远程连接,(那么phpMyAdmin为什么可以连接呢?那是因为phpMyadmin的环境是上传到服务器的,其本身访问数据库是相当于本机localhost访问的),如果想远程访问,可以使用下面的方法来解决。

远程连接mysql数据库时出现如下提示信息:“MYSQL CONNECT ERROR – 1130:Host ’202.43.**.**’ is not allowed to connect to this MySQL server”

在创建mysql账户时,*连接账户远程登录。也就是说,除了当前mysql所在的安装服务器外,其他的ip(主机)都是不允许访问的,即使你的用户名和密码是正确的。这时候就要修改用户的访问权限。

首先是用root用户登录到mysql的安装主机,然后进入mysql:

mysql -u root -p

root是mysql的最高授权用户名,这时会提示你输入密码,正确输入密码后回车,进入mysql。回车

然后输入如下命令:

grant all on 数据库名.* to ‘数据库账户名’@’%’ identified by ‘密码’ with grant option;


回车

flush privileges;

回车
注意:上面的单引号不能省,数据库名.* 表示要开放的数据库下所有表,如果该连接的所有数据库都要开放,可以用 *.* 代替。
‘数据库账户名’@’%’ 这里表示要开放的账户,百分号表示在任何主机都允许访问。
如果以上两步均显示 “Query OK, 0 rows affected (0.00 sec)”,那么说明命令已经成功执行,现在就可以远程连接你的mysql数据库了。

(1).如果想赋予所有操作的权限

grant all on ... to 用户名......

(2).如果想赋予操作所有数据库的所有表的权限

grant ... on *.* to 用户名......

(3).如果想赋予某个数据库的所有表

grant ... on 数据库名称.'*' to 用户名...... ([ * ]两边一定要加单引号)

(4).如果想赋予某个数据库的某张表

grant ... on 数据库名称.表名 to 用户名......

(5).如果想任何客户端都能通过该用户名远程访问

grant ... on ... to 用户名@% ....... (要把IP地址改成[ % ])

(6).改完了以后一定要重新启动MySQL服务

用户会存到Mysql服务器上的user表中,所以下面的两种方法都可以解决这个问题:

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

mysql -u root -p

mysql>use mysql;

mysql>update user set host = ’%’ where user = ’root’;mysql>select host, user from user; 

mysql>flush privileges;

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

GRANT ALL PRIVILEGES ON *.* TO ’myuser’@’%’ IDENTIFIED BY ’mypassword’ WITH GRANT OPTION; 

如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码

GRANT ALL PRIVILEGES ON *.* TO ’myuser’@’192.168.1.3’ IDENTIFIED BY ’mypassword’ WITH GRANT OPTION;

如果还是无法远程我们可参考

1、Mysql的端口是否正确,通过netstat -ntlp查看端口占用情况,一般情况下端口是3306。在用工具连接MySQl是要用到端口。例如My AdminMy Query BrowserMySQl Front等。

2、检查用户权限是否正确。
例如:用户Tester,user表里有两条记录:host分别为localhost和%(为了安全,%可以换成你需要外部连接的IP)。


3、查看/etc/my.cnf中,skip-networking 是否已被注掉,需要注掉。
报错:ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.51.112' (111)


4、查看iptables是否停掉,没关的情况下,无法连接。
通过:service iptables stop临时关闭。
报错:ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.51.112' (113)

另外,我们还可以通过配置http通道来使Navicat远程连接到数据库,这样做的好处是不需要前面繁杂的配置。在主机名IP地址那里填写LocalHost

用户名与密码一栏则填写你所在的数据库用户名与密码。

这时候还不能连接数据库的,需要通过Http通道的形式进行数据库连接。

点击连接属性标签栏中的Http,如下图所示:

勾选使用Http通道后,在通道地址一栏输入你的网址与后台文件地址。

无法远程登入MySQL数据库的几种解决办法


无法远程登入MySQL数据库的解决办法一: 尝试用MySQL Adminstrator GUI Tool登入MySQL Server,Server却回复错误讯息:Host '60-248-32-13.HINET-IP.hinet.net' is not allowed to connect to this MySQL server 这个是因为权限的问题,处理方式如下: shell




无法远程登入MySQL数据库的解决办法一:

尝试用MySQL Adminstrator GUI Tool登入MySQL Server,Server却回复错误讯息:Host '60-248-32-13.HINET-IP.hinet.net' is not allowed to connect to this MySQL server

这个是因为权限的问题,处理方式如下:
shell>mysql --user=root -p

输入密码
mysql>use mysql
mysql>GRANT SELECT,INSERT,UPDATE,DELETE ON [db_name].* TO [username]@[ipadd] identified by '[password]';

[username]:远程登入的使用者代码
[db_name]:表示欲开放给使用者的数据库称
[password]:远程登入的使用者密码
[ipadd]:IP地址或者IP反查后的DNS Name,此例的内容需填入'60-248-32-13.HINET-IP.hinet.net' ,包函上引号(')

(其实就是在远端服务器上执行,地址填写本地主机的ip地址。)
如果希望开放所有权限的话请执行:
mysql>update user set select_priv='Y' , Insert_priv='Y', Update_priv='Y', delete_priv='Y', Create_priv='Y', Drop_priv='Y',Reload_priv='Y', shutdown_priv='Y', Process_priv='Y', File_priv='Y', Grant_priv='Y', references_priv='Y',Index_priv='Y', Alter_priv='Y', Show_db_priv='Y', Super_priv='Y',Create_tmp_table_priv='Y',Lock_tables_priv='Y', Execute_priv='Y',Repl_slave_priv='Y',Repl_client_priv='Y' where user='[username]';

无法远程登入MySQL数据库的解决办法二:

如何解决客户端与服务器端的连接(mysql) :xxx.xxx.xxx.xxx is not allowed to connect to this mysql serv
1、进入mysql,创建一个新用户xuys:
格式:grant 权限 on 数据库名.表名 用户@登录主机 identified by "用户密码";

grant select,update,insert,delete on *.* to xuys@192.168.88.234 identified by "xuys1234";

查看结果,执行:

use mysql;
select host,user,password from user;
可以看到在user表中已有刚才创建的xuys用户。host字段表示登录的主机,其值可以用IP,也可用主机名,

将host字段的值改为%就表示在任何客户端机器上能以xuys用户登录到mysql服务器,建议在开发时设为%。

3、./mysqld_safe --user-root &

记住:对授权表的任何修改都需要重新reload,即执行第3步。

如果经过以上3个步骤还是无法从客户端连接,请执行以下操作,在mysql数据库的db表中插入一条记录:
use mysql;
insert into db values('192.168.88.234','%','xuys','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');

update db set host = '%' where user = 'xuys';
重复执行上面的第2、3步。

无法远程登入MySQL数据库的解决办法三:

附加fbysss解决phpMyAdmin连接远程用户的方法:
1.用root账户登录远程Mysql服务器,

grant select,update,insert,delete on *.* to sss@192.168.0.114 identified by "sss";
update user set host = '%' where user = 'sss';
退出mysql,在shell下执行

#mysqladmin -u root -p [password] reload
#mysqladmin -u root -p [password] shutdown
#/etc/rc.d/init.d/mysqld start

2.修改phpMyAdmin目录下的config.inc.php文件,找到
$cfg['Servers'][$i]['host'] 修改为远程服务器地址
$cfg['Servers'][$i]['user'] 修改为sss
$cfg['Servers'][$i]['password']修改为sss的密码

要注意的是:grant all privilege并不能把“grant” 的权限赋给用户,如果要加,可以直接在mysql中使用use mysql; update user set Grant_priv ='Y'来达到要求。

【相关文章】

如何解决MySQL问题——主机host_name被屏蔽
LAMP(Linux+Apache+Mysql+PHP)优化技巧
快速升级MySQL系统表

无法远程登入MySQL数据库的几种解决办法


无法远程登入MySQL数据库的解决办法一: 尝试用MySQL Adminstrator GUI Tool登入MySQL Server,Server却回复错误讯息:Host '60-248-32-13.HINET-IP.hinet.net' is not allowed to connect to this MySQL server 这个是因为权限的问题,处理方式如下: shell




无法远程登入MySQL数据库的解决办法一:

尝试用MySQL Adminstrator GUI Tool登入MySQL Server,Server却回复错误讯息:Host '60-248-32-13.HINET-IP.hinet.net' is not allowed to connect to this MySQL server

这个是因为权限的问题,处理方式如下:
shell>mysql --user=root -p

输入密码
mysql>use mysql
mysql>GRANT SELECT,INSERT,UPDATE,DELETE ON [db_name].* TO [username]@[ipadd] identified by '[password]';

[username]:远程登入的使用者代码
[db_name]:表示欲开放给使用者的数据库称
[password]:远程登入的使用者密码
[ipadd]:IP地址或者IP反查后的DNS Name,此例的内容需填入'60-248-32-13.HINET-IP.hinet.net' ,包函上引号(')

(其实就是在远端服务器上执行,地址填写本地主机的ip地址。)
如果希望开放所有权限的话请执行:
mysql>update user set select_priv='Y' , Insert_priv='Y', Update_priv='Y', delete_priv='Y', Create_priv='Y', Drop_priv='Y',Reload_priv='Y', shutdown_priv='Y', Process_priv='Y', File_priv='Y', Grant_priv='Y', references_priv='Y',Index_priv='Y', Alter_priv='Y', Show_db_priv='Y', Super_priv='Y',Create_tmp_table_priv='Y',Lock_tables_priv='Y', Execute_priv='Y',Repl_slave_priv='Y',Repl_client_priv='Y' where user='[username]';

无法远程登入MySQL数据库的解决办法二:

如何解决客户端与服务器端的连接(mysql) :xxx.xxx.xxx.xxx is not allowed to connect to this mysql serv
1、进入mysql,创建一个新用户xuys:
格式:grant 权限 on 数据库名.表名 用户@登录主机 identified by "用户密码";

grant select,update,insert,delete on *.* to xuys@192.168.88.234 identified by "xuys1234";

查看结果,执行:

use mysql;
select host,user,password from user;
可以看到在user表中已有刚才创建的xuys用户。host字段表示登录的主机,其值可以用IP,也可用主机名,

将host字段的值改为%就表示在任何客户端机器上能以xuys用户登录到mysql服务器,建议在开发时设为%。

3、./mysqld_safe --user-root &

记住:对授权表的任何修改都需要重新reload,即执行第3步。

如果经过以上3个步骤还是无法从客户端连接,请执行以下操作,在mysql数据库的db表中插入一条记录:
use mysql;
insert into db values('192.168.88.234','%','xuys','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');

update db set host = '%' where user = 'xuys';
重复执行上面的第2、3步。

无法远程登入MySQL数据库的解决办法三:

附加fbysss解决phpMyAdmin连接远程用户的方法:
1.用root账户登录远程Mysql服务器,

grant select,update,insert,delete on *.* to sss@192.168.0.114 identified by "sss";
update user set host = '%' where user = 'sss';
退出mysql,在shell下执行

#mysqladmin -u root -p [password] reload
#mysqladmin -u root -p [password] shutdown
#/etc/rc.d/init.d/mysqld start

2.修改phpMyAdmin目录下的config.inc.php文件,找到
$cfg['Servers'][$i]['host'] 修改为远程服务器地址
$cfg['Servers'][$i]['user'] 修改为sss
$cfg['Servers'][$i]['password']修改为sss的密码

要注意的是:grant all privilege并不能把“grant” 的权限赋给用户,如果要加,可以直接在mysql中使用use mysql; update user set Grant_priv ='Y'来达到要求。

【相关文章】

如何解决MySQL问题——主机host_name被屏蔽
LAMP(Linux+Apache+Mysql+PHP)优化技巧
快速升级MySQL系统表

怎么让mysql允许远程连接的方法

mysql默认状态是只支持localhost连接,这样远程服务器都输入IP地址去连接你的服务器是不可以的,下面我来介绍怎么让mysql允许远程连接配置方法,有需要的朋友可参考。

方法一,直接利用在“权限”-》管理中修改用户选择*.*或输入IP地址。

方法二,使用mysql的GRANT命令进行操作

例如:让newuser用户使用newpwd密码从IP:192.168.1.3主机链接到mysql服务器

具体步骤:

代码如下mysql>GRANT ALL PRIVILEGES ON *.* TO ‘newuser’@’192.168.1.3′ IDENTIFIED BY ‘newpwd’ WITH GRANT OPTION;

mysql>flush privileges;

完整配置方法

假设我们有:

代码如下Web-Server : 192.168.1.100 //ubuntu

Mysql-Server : 192.168.1.101 //xp

我们可以按照下面的步骤修改:

1, 登录 Mysql-Server 连接本地 mysql (默认只允许本地连接)

代码如下Microsoft Windows XP [版本 5.1.2600]

(C) 版权所有 1985-2001 Microsoft Corp.

C:Documents and Settingskuco>mysql -h localhost -u root -p

Enter pass:

Welcome to the MySQL monitor. Commands end with ; or g.

Your MySQL connection id is 13

Server version: 5.1.45-community-log MySQL Community Server (GPL)

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

mysql>

2, 修改 Mysql-Server 用户配置

代码如下mysql> USE mysql; -- 切换到 mysql DB

Database changed

mysql> SELECT User, Password, Host FROM user; -- 查看现有用户,密码及允许连接的主机

+------+----------+-----------+

| User | Password | Host |

+------+----------+-----------+

| root | | localhost |

+------+----------+-----------+

1 row in set (0.00 sec)

mysql> -- 只有一个默认的 root 用户, 密码为空, 只允许 localhost 连接

mysql> -- 下面我们另外添加一个新的 root 用户, 密码为空, 只允许 192.168.1.100 连接

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.100' IDENTIFIED BY '' WITH GRANT OPTION;

mysql> -- 当然我们也可以直接用 UPDATE 更新 root 用户 Host, 但不推荐, SQL如下:

mysql> -- UPDATE user SET Host='192.168.1.100' WHERE User='root' AND Host='localhost' LIMIT 1;

grant 权限名(所有的权限用all) on 库名(*全部).表名(*全部) to ’要授权的用户名‘@’%'(%表示所有的IP,可以只些一个IP) identified by “密码”;

身份检查使用user表(Host, User和Password)3个范围列执行。服务器只有在user表记录的Host和User列匹配客户端主机名和用户名并且提供了正确的密码时才接受连接。

在user表Host值的指定方法:

* Host值可以是主机名或IP号,或’localhost’指出本地主机。

* 你可以在Host列值使用通配符字符“%”和“_”。

* Host值’%'匹配任何主机名,空Host值等价于’%'。它们的含义与LIKE操作符的模式匹配操作相同。例如,’%'的Host值与所有主机名匹配,而’%.mysql.com’匹配mysql.com域

的所有主机。

3, 修改 Mysql 配置文件 my.ini

代码如下bind-address = 127.0.0.1

将 bind-address = 127.0.0.1 这一行注释掉, 即修改为:

代码如下#bind-address = 127.0.0.1

到此 Mysql-Server 端配置就完成了.

4, 连接 Web-Server , 检查一下是否能连上

代码如下kuco@kuco-desktop:/$ /opt/lampp/bin/mysql -h 192.168.1.101 -u root -p

Enter password:

Welcome to the MySQL monitor. Commands end with ; or g.

Your MySQL connection id is 23

Server version: 5.1.45-community-log MySQL Community Server (GPL)

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

mysql> -- 一切OK如何设置mysql允许远程连接

你好,
1
使用“Ctrl + R”组合键快速打开cmd窗口,并输入“cmd”命令,打开cmd窗口。

2
使用“mysql -uroot -proot”命令可以连接到本地的mysql服务。

3
使用“use mysql”命令,选择要使用的数据库,修改远程连接的基本信息,保存在mysql数据库中,因此使用mysql数据库。

4
使用“GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;”命令可以更改远程连接的设置。

5
使用“flush privileges;”命令刷新刚才修改的权限,使其生效。

6
使用“select host,user from user;”查看修改是否成功。

如何设置mysql允许远程连接

你好,
1
使用“Ctrl + R”组合键快速打开cmd窗口,并输入“cmd”命令,打开cmd窗口。

2
使用“mysql -uroot -proot”命令可以连接到本地的mysql服务。

3
使用“use mysql”命令,选择要使用的数据库,修改远程连接的基本信息,保存在mysql数据库中,因此使用mysql数据库。

4
使用“GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;”命令可以更改远程连接的设置。

5
使用“flush privileges;”命令刷新刚才修改的权限,使其生效。

6
使用“select host,user from user;”查看修改是否成功。

怎么解决mysql不允许远程连接的错误

如果mysql不支持远程连接,会出现提示:错误代码是1130,ERROR 1130: Host * is not allowed to connect to this MySQL server 

解决方案:

将需要被访问的mysql服务器的localhost值改成%,进入mysql的BIN目录

运行代码如下:

--打开mysql数据库服务

mysql -u root -p

--打开mysql数据库文件

mysql>use mysql;

--将mysql数据库中user表中user字段下的root用户的host值改为通配符%(默认是localhost)

mysql>UPDATE user SET host ='%' WHERE user = 'root';

--修改之后再刷新一下权限

mysql>flush privileges;

具体分析

1、在本机登入mysql后,更改“mysql”数据库里的“user”表里的“host”项,从”localhost”改为'%'。

代码如下:

mysql>

mysql>use mysql;

mysql>select 'host' from user where user='root';

#查看mysql库中的user表的host值(即可进行连接访问的主机/IP名称)

代码如下:

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

#修改host值(以通配符%的内容增加主机/IP地址,当然也可以直接增加某个特定IP地址,如果执行update语句时出现ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY' 错误,需要select host from user where user = 'root';

查看一下host是否已经有了%这个值,如果有了直接执行下面的flush privileges;即可)

代码如下:

mysql>flush privileges;

mysql>select host,user from user where user='root';

mysql>quit

怎么解决mysql不允许远程连接的错误

首先看报错窗口。

经查阅,错误原因是:本地IP(xxx.xxx.xxx.xxx)没有访问远程数据库的权限。

于是下面开启本地IP(xxx.xxx.xxx.xxx)对远程mysql数据库的访问权限。

首先远程连接进入服务器,在cms中输入mysql -u root -p,然后回车,输入密码后回车进入mysql命令行。

输入use mysql;

输入select user,password,host from user;

可以看到host中只有localhost主机。我们需要将xxx.xxx.xxx.xxx也添加到这里才对。

添加方法如下:

输入

grant all privileges on *.* to root@"xxx.xxx.xxx.xxx" identified by "密码";

这相当于是给IP-xxx.xxx.xxx.xxx赋予了所有的权限,包括远程访问权限。

然后再输入

flush privileges;

这相当于是重新加载一下mysql权限,这一步必须有。

再次输入select user,password,host from user;

可以看到host中已经有了新加的IP。

现在再次用Navicat for MySQl访问远程mysql数据库,已经能正常打开了。

问题解决。

不过还有一个问题,发现双击打开某张表的时候很慢,至少要3秒。

原因是:

当远程访问mysql时, mysql会解析域名, 所以会导致访问速度很慢,

会有2,3秒延时!

解决办法:

修改mysql安装目录下的my.ini,加上下面这个配置可解决此问题。在[mysqld]下加入:skip-name-resolve

保存退出后重启mysql服务。

然后访问速度就和本地一样快啦。

显示全文