[MySQL报错1044]原因及解决方案详解


当我们登录mysql数据库的时候,最非常容易遇上1044报错。而在mysql中1044意味着什么呢?用最通俗的话来形容就是:没权限,密码错误。

针对这一在mysql数据库中一直让大家头痛的难题,树懒君将通过本文进行解析,希望能给使用MySQL的大家带来帮助。

出现MySQL报错1044的原因:

产生1044报错的原因是mysql账号远程连接mysql服务器时沒有充足的权限。

当mysql安装完成之后,默认设置仅容许”localhost”进行连接。所以大部分服务器端脚本程序可以很方便的联接到本地服务器的数据库,但却会被远程服务器拦截,直到授予足够的用户权限。

MySQL访问管理涉及两个过程:

  1. 服务器查验您的桌面上(主机地址或IP地址)是否容许联接。
  2. 如果可以连接,服务器会查验每一个请求,看看你是不是有充足的权限来执行它。比如,创建表的权限,删除表的权限或改动表的权限。

注意:在Navicat中,假如您的远程服务器适用SSH联接,Navicat将可以根据SSH与远程MySQL数据库联接,而不对已有MySQL权限设置做出任何的改动。该隧道的SSH的关键优势是它允许我们可以绕过防火墙拦截连接到MySQL服务器的端口。

MySQL 1044报错 解决方案:

  • 如果是管理员用户登陆报错,很可能是密码错误,修改密码之后将MySQL服务重启即可;
  • 如果是一般用户登录出现报错,可能是密码错误或是权限受到限制,必须请管理人员修改权限。
  • 假如存在用户名为空的帐户(即匿名帐户),登陆时尽管用的是root,但实际上是匿名登录的,这可以根据错误提醒里的”@’localhost’看出。

具体解决方案如下:

方法一:修改密码

1.关掉mysql

service mysqld stop

2.屏蔽掉权限

mysqld_safe --skip-grant-table
显示:Starting demo from .....

3.在新开终端中输入

mysql -u root mysql
mysql> UPDATE user SET Password = PASSWORD('newpassword') where USER='root';
mysql> FLUSH PRIVILEGES;
mysql> \q

方法二:如果有匿名用户,必须将匿名用户删掉

1.关掉mysql

service mysqld stop

2.屏蔽掉权限

mysqld_safe --skip-grant-table
显示:Starting demo from .....

3.在新开终端中输入

mysql -u root mysql
mysql> delete from user where USER='';
mysql> FLUSH PRIVILEGES;
mysql> \q