解决mysql操作1045错误,1153错误和1130错误
一、ERROR 1045 (28000): Access denied for user 'root'@'119.29.194.112' (using password: YES)
遠程連接數據,發現報1045錯誤,原因是本地的ip沒有訪問遠程數據庫的權限。
解決方法:
1、進入數據庫;
2、查看是否有權限:
use mysql;
#查看本地ip是否有權限
select user,password,host from user; ? ?
可以看到host列中只有localhost主機,沒有119.29.194.112,所以root用戶在119.29.194.112主機上沒遠程訪問數據庫的權限,因此沒有我們需要將119.29.194.112也添加到這里。
3、授權:
#授予指定ip主機對數據庫的所有權限,包括遠程訪問權
grant all privileges on *.* to root@"119.29.194.112" identified by "密碼";
?
?#如果想要root用戶在任意主機都有遠程操作數據庫的所有權限,則將ip換為%
grant all privileges on *.* to root@"%" identified by "密碼"; ?
?
?#授權立即生效
?flush privileges; ?
4、現在再次查看是否擁有權限,輸入:select user,host from user; 可以看到host列已經有了我們剛才添加主機ip或者%,說明已經有訪問的權限了;再次遠程連接,就能正常連接上數據庫了。
?
二、ERROR 1153 : Got a packet bigger than 'max_allowed_packet' bytes。
導入數據庫腳本文件進行建表的時候,發現表導入失敗,查看日志,報了1153 ERROE,原因是數據庫默認對導入的數據大小做了限制,因此我們可以通過修改數據庫的該變量配置數值。
1、臨時修改:
#修改為512M
set global max_allowed_packet=524288000;
2、長久修改:
修改my.cnf(centos下路徑為/etc/my.cnf。windows下為my.ini),在 [MySQLd] 部分添加下列配置(如存在則調整其值),并重啟mysql:
max_allowed_packet=256M (根據實際情況調整數值)
可通過命令查看是否修改成功:
show VARIABLES like '%max_allowed_packet%’;
?
三、ERROR 1130: host 'localhost' not allowed to connect to this MySQL server。
由于不小心將mysql數據庫本地連接的root刪除了,之后連接MySQL,一直報ERROR 1130: host 'localhost' not allowed to connect to this MySQL server。
解決方法:
1、停止MySQL服務,打開cmd命令行,執行net stop mysql;
2、在mysql的安裝路徑下,找到配置文件my.ini,找到[mysqld]這一欄,在這部分最下面加入skip-grant-tables,顧名思義,就是在啟動mysql時不啟動grant-tables授權表,保存。保存的時候可能會因為權限不夠出現拒絕保存的情況,這時可以右鍵my.ini文件-->屬性-->安全-->編輯,修改文件的讀寫權限。
3、重啟mysql服務,net start mysql;
4、執行mysql -uroot -p,回車,再回車,即可進入mysql數據庫;
5、在本機登入mysql后,更改 “mysql” 數據庫里的 “user” 表里的 “host” 項,將”localhost”改稱'%'。
mysql>use mysql;
mysql>update user set host = '%' where user ='root';
mysql>flush privileges;??? #刷新用戶權限表
6、插入本地登錄的用戶:
mysql>insert into user values('localhost', 'root', '', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y','','','','',0,0,0,0,'','');
此時本地連接的用戶localhost密碼為空
7、修改root密碼:
(1)用set password 方式修改root密碼:
mysql> set password for?root@'localhost'=PASSWORD('12345');
執行上述命令后出現錯誤:ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
注意:以skip-grant-tables方式啟動mysql后,不能用直接用set password的方式修改root密碼,須注釋skip-grant-tables, 然后重啟服務,連接數據庫修改密碼。
(2)用update方式修改root密碼正常:
mysql> update user set password=password("123") where user="root";
mysql>flush privileges;?
?(3)不連接數據庫,直接在cmd下修改密碼:
mysqladmin -uroot -p舊密碼 password 新密碼,此種方式修改密碼也不能在以“skip-grant-tables“方式啟動mysql后進行
如:mysqladmin -uroot -p123456 password 1234
8、退出MySQL,在配置文件中注釋:skip-grant-tables,重啟mysql服務
9、本地重新連接mysql數據庫,輸入修改后的密碼,連接成功。
?
總結
以上是生活随笔為你收集整理的解决mysql操作1045错误,1153错误和1130错误的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在centos服务器安装MySQL数据库
- 下一篇: linux cmake编译源码,linu