大三花了近半年的时间给学校做了一套系统,准备部署到服务器上,测试中使用的数据库服务器是windows平台的,学校的是linux的,需要使用SSH登录,使用起来不是太方便,为了方便数据查看管理,准备使用SQLyog连接上去,打开SQLyog填写SSH的相关信息(主机,用户名,密码后),连接直接报错,于是一边继续尝试各种登录,一边去google,最后发现是mysql配置的问题:
1.修改"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;
其实在安装时候添加管理用户时默认的是用户'%',如果这样就不需要修改的了。
这里也可以使用授权法,下面有介绍
2.默认安装下,只能支持本机(安装数据库的机器)进行管理数据库,
使用VI 打开/etc/usr/local/rfidkaoqin/server/mysql/my.cnf 文件后会发现有这样一段:
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
127.0.0.1(只能允许本机访问)
这里我就将bind-address = 127.0.0.1这一段注释了(前加#号)就是可以使用所有ip地址进行管理,当然也可以修改为指定的ip。
未修改之前使用使用指令:netstat -an | grep 3306 查看3306端口映射情况:如下所示:
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
修改之后:
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
3.一切完毕后,重启mysql,指令:service mysqld restart , service mysql restart (5.5.7版本命令),发现仍旧不行,注意到了报错信息有所改变,说是ssh认证出现问题,纠结好久,仔细看了主机地址,用户名,密码都是正确的,找不到问题所在处,纠结了好久,无意中,打开SQLyog时,
没有使用SSH隧道登录,而是使用了普通方式登录,竟然顺利的连接上去了。。。。。。无语。。。。。。配置了这些,竟然不需要使用ssh隧道进行登录管理了。
网上也有这种问题的解决方法:
(1)授权法
如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码
mysql> GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword’ WITH GRANT OPTION;
运行完正常的话会出现“Query OK, 0 rows affected (0.00 sec)” 这样的提示,表示已经授权成功。这时还需要将3306端口打开,同上面的2中操作。
做这个项目时,本人从未有过SSH登录管理linux服务器的相关经验,所写内容可能比较肤浅,见笑了。