远程数据库 MySQL1130 报错 1045 报错详解
2017-02-06| 程成| 1462| 0| MySQL

下面是我自己在配置阿里云mysql时候遇到的数据库1130报错和数据库1045报错。

 

 

百度查询mysql的1130错误是远程连接的用户无远程权限问题导致。解决方案:在本机登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,把”localhost”改称’%’。

 


解决Linux主机登陆phpMyAdmin1030错误



1、登录

 

mysql -uroot -ppassword

 


2、选择mysql库

 

mysql>use mysql;

 


3、查看user表中的host值(即可访问的主机,ip地址)



mysql>select ‘host’ from user where user=’root’;

 


4、修改host值,这里用了通配符‘%’,也可以直接输ip地址



mysql>update user set host = ‘%’ where user =’root’;

 


5、刷新系统权限相关表


 

mysql>flush privileges;

 



6、查看是否修改



mysql>select ‘host’from user where user=’root’;

 



7、重启mysql服务

 

service mysqld restart

 

 

 

 

即可通过第三方软件管理数据库,

 



mysql基本命令https://yq.aliyun.com/articles/43161

 

 

 

 

 

 

解决Linux主机登陆phpMyAdmin1045错误



这个问题出在阿里云官方linux版的web一键包中,在使用一段时间后不知道什么原因导致phpMyAdmin登陆失败1045错误提示,在ssh上面登陆mysql也是1045错误。
错误提示如下:



ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)



首先我想到的办法是进行安全模式进行mysql的root密码重置,结果失败,根本无法进入安全模式,不得不说这也是官方包的安全之处。
网上一大堆教程说是要重置mysql,我的天,重置了我还得备份数据,再恢复,甚是麻烦!下面详细说一下不进入安全模式的mysql密码修改,不是什么高深的方法,我看论坛没有,就放上来,算是记录一下。
以下是不进入安全模式修改root密码



  1. 首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库。

因为在修改的过程中任何人都可以登陆mysql修改用户密码的。
我的办法是停止了apache或是nginx服务。



service httpd/nginx stop

 

 

2.编辑 my.cnf文件



vi /etc/my.cnf

 

 

如下图所示:
[attachment=87716]


 
我们在[mysqld]的启动选项里面加入 skip-grant-tables 其实就是跳过授权表。(这是方法精髓所在)


原代码如下:



[client] 
port = 3306 
socket = /tmp/mysql.sock 
[mysqld] 
port = 3306 
socket = /tmp/mysql.sock 
skip-external-locking 
log-error=/alidata/log/mysql/error.log 
key_buffer_size = 16M 
max_allowed_packet = 1M 
table_open_cache = 64 
sort_buffer_size = 512K 
net_buffer_length = 8K 
read_buffer_size = 256K 
read_rnd_buffer_size = 512K 
myisam_sort_buffer_size = 8M

 

 

 

更改后的代码如下:



[client] 
port = 3306 
socket = /tmp/mysql.sock 
[mysqld] 
port = 3306 
socket = /tmp/mysql.sock 
skip-grant-tables  【就是这个地方】 
#skip-external-locking  【这个我暂时先注释掉】 
log-error=/alidata/log/mysql/error.log 
key_buffer_size = 16M 
max_allowed_packet = 1M 
table_open_cache = 64 
sort_buffer_size = 512K 
net_buffer_length = 8K 
read_buffer_size = 256K 
read_rnd_buffer_size = 512K 
myisam_sort_buffer_size = 8M



 
原文件里面有个 skip-external-locking 我在前面加了# 将它注释掉了!


 

好了,退出并保存


 

:wq!

 

 

3.重新启动mysqld



service mysqld restar

 

 


结果如下:


 

Stopping MySQL: [ OK ] Starting MySQL: [ OK ]



4.登录并修改MySQL的root密码

 

mysql

 

 

结果如下:

 


Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3 to server version: 3.23.56
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

 

 

进入mysql库


use mysql;

 

 


结果如下:

Database changed 更改root密码:




UPDATE user SET Password = password ( '新密码' ) WHERE User = 'root';



 

结果如下:




Query OK, 3 rows affected (0.00 sec) Rows matched: 3 Changed: 3 Warnings: 0



 

刷新数据库




FLUSH PRIVILEGES;



 

结果如下:


Query OK, 0 rows affected (0.00 sec)


 


5.将MySQL的登录设置修改回来



vi /etc/my.cnf



 

将刚才在[mysqld]的段中加上的skip-grant-tables删除,并把注释的部分改回来。

保存并且退出vi




:wq!



 

6.重新启动mysqld 




service mysqld restart

 

 



Stopping MySQL: [ OK ] Starting MySQL: [ OK ]



 
最后启动刚才停止的服务




service httpd/nginx restart

 

 



好了,进入phpmyadmin不再有1045提示了!
 


二、下面是附上进入安全模式后密码修改方法


1、停用mysql服务:



 /etc/rc.d/init.d/mysqld stop


 


或者是



service mysqld stop



 

2、输入命令:



mysqld_safe --user=mysql --skip-grant-tables --skip-networking &


 


根据环境不同可能会不成功,提示你要进入mysql安装目录进行
那就找到安装目录,我这示例目录是  /alidata/server/mysql  这个常见于阿里服务器的一键安装包。
命令格式如下:




/alidata/server/mysql/bin/mysqld_safe --user=mysql --skip-grant-tables --skip-networking &




 
3、登入数据库:



  mysql -u root mysql



 
没有密码直接进入mysql



4、进入mysql



use mysql;


 


结果如下:
Database changed 




5、更改root密码:



UPDATE user SET Password = password ( '新密码' ) WHERE User = 'root';


 


结果如下:


Query OK, 3 rows affected (0.00 sec) Rows matched: 3 Changed: 3 Warnings: 0

 


刷新数据库



FLUSH PRIVILEGES;


 


结果如下:
 
Query OK, 0 rows affected (0.00 sec)

 


千万不要忘记在mysql中操作的每条命令后面都要有“;”的。
最后退出



mysql> quit


 

重启mysql



/etc/rc.d/init.d/mysqld restart


 


或者是



service mysqld restart



 
用root登陆mysql



Enter password:新密码
mysql -uroot –p


 
 
登陆成功!

 

 

 

 

×
作者:程成
QQ:492245711