linux下剛安裝了mysql,嘗試寫了程序鏈接mysql,出現了只有用本地ip地址才能鏈接,而127.0.0.1和localhost都不能訪問php
解決這個問題主要查看3個方向mysql
1.hosts中是否有ip映射 2.mysql數據庫中user表中的用戶信息是否正確
我解決的方向,linux
1.hosts查看了有映射127.0.0.1和localhost的信息。sql
2.用戶信息有誤數據庫
問題在這裏:剛安裝的時候記得用戶和密碼都是root,並且配置ip地址經過程序或者其餘客戶端軟件訪問是可以訪問成功的。socket
可是退出重啓系統後在本地使用命令(其餘客戶端等都訪問正常)函數
mysql -uroot -proot
訪問不了,提示密碼工具
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
百思不得其解...ui
沒辦法,只有從新修改用戶密碼了spa
方法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來執行確認。