linux下剛安裝了mysql,嘗試寫了程序連接mysql,出現了只有用本地ip地址才能連接,而127.0.0.1和localhost都不能訪問
解決這個問題主要查看3個方向
1.hosts中是否有ip映射 2.mysql數據庫中user表中的用戶信息是否正確
我解決的方向,
1.hosts查看了有映射127.0.0.1和localhost的信息。
2.用戶信息有誤
問題在這里:剛安裝的時候記得用戶和密碼都是root,而且配置ip地址通過程序或者其他客戶端軟件訪問是能夠訪問成功的。
但是退出重啟系統后在本地使用命令(其他客戶端等都訪問正常)
mysql -uroot -proot
訪問不了,提示密碼
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
百思不得其解...
沒辦法,只有重新修改用戶密碼了
方法1
# /etc/init.d/mysql stop # mysqld_safe --user=mysql --skip-grant-tables --skip-networking & # mysql -u root mysql mysql> UPDATE user SET Password=PASSWORD('newpassword') where USER='root'; mysql> FLUSH PRIVILEGES; mysql> quit # /etc/init.d/mysql restart # mysql -uroot -p Enter password: <輸入新設的密碼newpassword>
然后在連接mysql,成功。問題完美解決,localhost和127.0.0.1也都能訪問了
可能還有其他原因
原因2-配置文件錯誤:
檢查etc下面的my.cnf如下內容:
#password = your_password port = 3306 socket = /usr/mysql-data/mysql.sock # Here follows entries for some specific programs # The MySQL server [mysqld] port = 3306 socket = /usr/mysql-data/mysql.sock
mysql修改密碼方法有幾種
方法一
使用phpMyAdmin
(圖形化管理MySql數據庫的工具),這是最簡單的,直接用SQL語句修改mysql數據庫庫的user表,不過別忘了使用PASSWORD函數,插入用戶用Insert命令,修改用戶用Update命令,刪除用Delete命令。在本節后面有數據表user字段的詳細介紹。
方法二
使用mysqladmin。輸入
mysqladmin -u root -p oldpassword newpasswd
執行這個命令后,需要輸入root的原密碼,這樣root的密碼將改為newpasswd。同樣,把命令里的root改為你的用戶名,你就可以改你自己的密碼了。
當然如果你的mysqladmin連接不上mysql
server,或者你沒有辦法執行mysqladmin,那么這種方法就是無效的,而且mysqladmin無法把密碼清空。
下面的方法都在mysql提示符下使用,且必須有mysql的root權限:
方法三
mysql> INSERT INTO mysql.user (Host,User,Password) VALUES('%','system', PASSWORD('manager')); mysql> FLUSH PRIVILEGES
確切地說這是在增加一個用戶,用戶名為system,密碼為manager。注意要使用PASSWORD函數,然后還要使用FLUSH
PRIVILEGES來執行確認。