標籤:img 方法 str info 使用者名稱 mys c中 所有許可權 select
情景:我在mac的終端下用ssh操作虛擬機器中的centos,mysql運行在centos中
mysql -u root -p
用root登入mysql後
使用
grant all privileges on db1.* to [email protected]‘%‘ identified by ‘user1‘ with grant option;
意為:給所有主機登入(%指任意主機)的使用者名稱為user1(密碼為user1,identified by後接密碼) 授予操作資料庫db1下所有資料表(db1.*指db1所有資料表)的所有許可權。
此時
select * from mysql.user \G;
發現user1的許可權還是N,即上面授予操作無效,為什麼呢?
原因:
這時在mysql下root登入,執行show grants;顯示
grant all privileges on *.* to ‘root‘@‘localhost‘ xxxxxxxxxxxx
對於本地主機下登入的root使用者才有所有權,而這時我是在mac的終端下ssh操作虛擬機器中的mysql,這時的root使用者當然沒有所有權。
解決方案:回到虛擬機器中登入mysql的root操作。
在虛擬機器mysql中添加:
grant all privileges on *.* to ‘root‘@‘%‘ identified by ‘root的密碼‘ with grant option;
添加後再用
select * mysql.user \G;
發現多了一行,內容是使用者為root,主機為%,擁有所有許可權。
這時就可以回到mac在mysql登入root操作了。
如果這時還不行,可以用以下方法:
在mac中開啟mysqlworkbench(需要另外下載),用mysql root使用者遠程登入虛擬機器的mysql。
我這時虛擬機器的地址是192.168.20.101(確保虛擬機器的防火牆關了或者開啟了mysql的連接埠3306)。
登入後在左上方選擇Users and Privileges,可以添加使用者,並在Administration Roles選卡添加使用者權限。
Mysql grant all privileges on ...不生效解決方案