提示:ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql' 由於使用mysql -u root 方式登錄,實際上是登錄到一個空用戶(''@'localhost'),不是root用戶
提示:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 一般這個錯誤是由密碼錯誤引起
方法一:
1.關閉mysql
service mysqld stop
2.屏蔽權限,重置密碼的第一步就是跳過MySQL的密碼認證過程,方法如下
>cd /etc/mysql >sudo vim my.cnf
mysqld_safe --skip-grant-table
或者
skip-grant-tables
3.新開起一個終端輸入
mysql -u root mysql
UPDATE user SET Password=PASSWORD('newpassword') where USER='root';
FLUSH PRIVILEGES
FLUSH PRIVILEGES/記得要這句話,否則如果關閉先前的終端,又會出現原來的錯誤
方法二:
1.關閉mysql
service mysqld stop
2.屏蔽權限
skip-grant-tables
3.新開起一個終端輸入
mysql -u root mysql
delete from user where USER=''; FLUSH PRIVILEGES
4.編輯my.cnf,去掉剛才添加的內容,然后重啟MySQL。大功告成!
MySQL允許遠程訪問的設置
1.注釋bind-address = 127.0.0.1
>cd /etc/mysql >sudo vim my.cnf
將bind-address = 127.0.0.1注釋掉(即在行首加#),如下:
# Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. # bind-address = 127.0.0.1
除了注視掉這句話之外,還可以把后面的IP地址修改成允許連接的IP地址。但是,如果只是開發用的數據庫,為了方便起見,還是推薦直接注釋掉。
2.刪除匿名用戶
登錄進數據庫
切換到數據庫mysql。SQL如下:
use mysql;
查詢用戶表命令
select User,authentication_string,Host from user
如有,刪除匿名用戶。SQL如下:
delete from user where user='';
flush privileges
3.增加允許遠程訪問的用戶或者允許現有用戶的遠程訪問
接着上面,刪除匿名用戶后,給root授予在任意主機(%)訪問任意數據庫的所有權限。SQL語句如下
這里的123456為你給新增權限用戶設置的密碼,%代表所有主機,也可以具體到你的主機ip地址
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456'
flush privileges
4.重啟數據庫
sudo service mysql restart
MySQL啟動,停止,重啟方法:
一、啟動方式
1、使用 service 啟動:service mysqld start
service mysqld start
2、使用 mysqld 腳本啟動:
/etc/inint.d/mysqld start
3、使用 safe_mysqld 啟動:
safe_mysqld&
二、停止
1、使用 service 啟動:
service mysqld stop
2、使用 mysqld 腳本啟動:
/etc/inint.d/mysqld stop
3、
mysqladmin shutdown
三、重啟
1、使用 service 啟動:
service mysqld restart
2、使用 mysqld 腳本啟動:
/etc/inint.d/mysqld restart