在服务器只能使用【无密码】登陆,即
要么直接mysql进入数据库,要么mysql -u root -p,然后不写密码回车进入数据库(但是之前一开始有设置密码了!!!之前是按这个步骤来的),
然后,登陆后只能看到information_schema和test两个数据库,而且没了很多权限。
另外,能在本地连接远程服务器数据库可以使用root和密码登陆连接,能看到mysql数据库的user表。
也就是说,在服务器的数据库的root已经失去了超级权限!!!
原因:
一开始安装mysql的时候没有把localhost的空用户删除。
导致root有两种登录方式,一个是基于localhost的,另一个就是在其它任意主机登录的,
你设置的密码是基于IP地址登录时的密码,而你在本机运行mysql -u root -p时,默认检查的是localhost方式
如何解决:
解决具体操作步骤:
第一种方法:
在服务器中,
先关闭mysql:service mysqld stop
然后,mysqld_safe --skip-grant-tables
(如果是mariadb,则使用systemctl restart mariadb.service)
打开mysql
删掉已经存在了host为localhost的记录,则先(一定要一开始就!!!)删除该记录,delete from user where host='localhost';
第二种方法:
如果你已经在本地主机远程连接数据库的root用户,
那么直接在mysql.user里面删除localhost的空用户
然后再服务器上面重启数据库服务即可