在php脚本中使用mysqli_connect('localhost',...) or die('Error connecting to MySQL server')连接数据库时,老是返回:Error connecting to MySQL server。
此时可以 添加函数mysqli_connect_errno()(返回上一次连接错误的错误代码)或者mysqli_connect_error() (返回上一次连接错误的错误描述)进行查看,如:
mysqli_connect('localhost',...) or die('Error connecting to MySQL server'.mysqli_connect_error());
此时返回错误为:
1130:"Host 'xxx' is not allowed to connect to this MySQL server
解决方案:
(1)改表法
可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改要访问的数据库或者要访问的数据库的某个表的权限中的 "host" 项,将"localhost"改称"%"
可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改要访问的数据库或者要访问的数据库的某个表的权限中的 "host" 项,将"localhost"改称"%"
mysql -u root -pvmwaremysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>select host, user from user;
mysql>update user set host = '%' where user = 'root';
mysql>select host, user from user;
(2)授权法
登录mysql命令行,并执行
mysql>GRANT ALL PRIVILEGES ON *.* TO '用户名'@'主机名' IDENTIFIED BY '密码' WITH GRANT OPTION;
mysql>GRANT ALL PRIVILEGES ON *.* TO '用户名'@'主机名' IDENTIFIED BY '密码' WITH GRANT OPTION;
注:这里第一个*号表示全部数据库,第二个*号表示数据库的全部表,当然这里的*可特定为某个数据库的某个表
mysql>FLUSH PRIVILEGES; //修改生效
mysql>FLUSH PRIVILEGES; //修改生效
mysql>EXIT
//退出MySQL服务器
此时,用phpMyAdmin查看数据库权限,会发现
权限这里多了一行,是主机名。
总结:这样
就可以在其它任何的主机上以root身份登录啦!