如何快速修改MySQL用戶的host屬性

當你遠程登錄MySQL時,使用的賬號要有特殊要求。

默認的賬號的host屬性都是localhost,意思是這個賬號隻能本地使用,如果要使用某個賬號來遠程登錄,必須將賬號的host屬性值更改成%。

執行的sql語句如下:

update user set host = '%' where user = 'root';

補充:mysql 修改root密碼 修改賬戶登錄host

1.忘瞭root密碼

遠程服務器起瞭一個mysql服務,裡面有個hive賬戶,在遠程服務器能通過命令行用mysql -hlocalhost -uxxx -pxxx的方式登錄,但是用navicat客戶端,怎麼也登錄不上,而且navicat顯示的還是我自己機器的ip地址。

初步懷疑,是mysql裡的A賬戶密碼沒有設置正確。於是需要用root賬號對hive賬戶重新進行設置。

坑爹的是,mysql也不是我佈的。而且測試環境,也不知道該找誰要密碼。那就使出終極武器吧:修改root密碼。

2.重置mysql root密碼。

首先註意的一點:mysql的root賬戶與服務器的root賬戶不是同一個概念,不要混為一談。

首先,停掉mysql服務:

sudo service mysql stop

如果有服務器的root賬戶,自然就不用sudo瞭,下面所有的操作也是一樣。上面的命令適用於Ubuntu和Debian。CentOS、Fedora和RHEL下使用mysqld替換mysql。下面所有的操作也是一樣。

然後,再以安全模式啟動mysql:

sudo mysqld_safe --skip-grant-tables --skip-networking & 

這樣我們就可以直接用root登錄,無需密碼:

mysql -u root 

這樣,我們就用root賬戶登錄瞭mysql。

然後,就可以重置root密碼瞭:

mysql> use mysql; 
mysql> update user set password=PASSWORD("mynewpassword") where User='root'; 
mysql> flush privileges; 

重置完畢以後,退出mysql。然後再將mysql服務啟動:

sudo service mysql restart 

接下來,就是用root賬戶登錄瞭:

mysql -u root -pmynewpassword 

3.修改A賬戶相關權限

用root賬號登錄mysql以後,接下來看看A賬號的相關信息:

mysql> use mysql;
Database changed
mysql> select User, Host from user where User='hive';
+------+--------------+
| User | Host     |
+------+--------------+
| hive | 127.0.0.1  |
+------+--------------+

這一下就明白瞭。尼瑪難怪navicat客戶端登不瞭。hive賬戶的host隻有127.0.0.1,自然隻能在本機登錄瞭。

mysql> update user set Host='%' where User='hive';

將hive賬戶設置為所有機器均可登錄,然後再刷新一下權限:

mysql> flush privileges;

再查看一把:

mysql> select User, Host from user where User='hive';
+------+------+
| User | Host |
+------+------+
| hive | %  |
+------+------+

至此為止,大功告成!

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。

推薦閱讀: