昨天下午突然接到通知,把项目移交给客户,所以需要做服务器转移,太突然了,我这边项目上还有两个问题正在解决呢,其中一个已经解决了一半了,想把这个解决完再转移,到时候少挑一个毛病(其实不做也行,这个可以沟通一下就行了,还是为了锻炼自己)。但没过一个小时项目经理又催了一次,说对方项目负责人正在催呢,没办法,暂时放弃了,开始转移服务器,然后就开始啦手忙脚乱的一个下午。

第一次做项目,以前都是自己小打小闹的在本地测试,所以有很多问题都没有碰到过。客户的服务器连接方式是ssh的,以前虽然用过,但是不记得ssh这个词了。其实就是通过linux虚拟终端进行操作,之前也有过相关操作,没有那么狼狈。

项目转移到对方服务器之后需要修改config配置文件,然后把项目表导入到服务器的数据库中。但在本地用phpmyadmin导入的时候发现不能链接上服务器的mysql。提示:#1130。查了一下,ERROR 1130 (HY000): Host '192.168.0.1' is not allowed to connect to this MySQL server——不能远程连接数据库

原因:可能是因为系统数据库mysql中user表中的host是localhost

解决办法:将mysql中user表中的host改为ip和localhost(如果只改为ip, mysql -u root -p命令就连不上数据库了,需要用mysql -h 服务器ip -u root -p,因为默认的连接mysql数据库user表中host的值,而这个命令的默认host是localhost,就连不上了)。

工具:ssh、Xshell5、SecureCRS

操作:

1、在ssh工具上启动mysql

[root@localhost /]# service mysqld start (5.0版本是mysqld)
[root@szxdb etc]# service mysql start (5.5.7版本是mysql)

2、连接到本机上的MYSQL:

mysql -uroot -p(回车后输入密码)
mysql>

3、1)该表法:更改"mysql" 数据库里的 "user" 表里的 "host"项,从"localhost"改成"%"

mysql> use mysql;
mysql> update user set host = '%' where user ='root';
mysql>flush privileges;
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.0.1' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

注:本人使用的是第一种方法,但使用第一种方法时出现了ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY' 错误提示。原因是host已经有了%这个值,所以直接运行命令:

mysql>flush privileges; 

测试一下,OK!

4、退出MYSQL命令

exit;

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

还有一种情况本人没有碰到,但有的网友碰到了,这里也写一下吧,以备后用:

phpMyAdmin说是用户名密码的问题,这就奇怪了,root用户名密码肯定没有问题,而且通过命令行连接没有问题。又仔细查看配置文件,还是没有问题。于是去搜了一下,找到这个解决方法.

先用root登录MYSQL服务器,执行
 mysql>set  password  for  你要用的用户名@"localhost"=old_password('这个用户的密码');

原因是因为你使用的mysql服务器版本中使用了新的密码验证机制,这需要客户端的版本要在4.0以上,原来的密码函数被改为old_password();,这样使用password()生成的密码在旧的版本上就可以解决这个问题了.