之前一直對Mysql數據庫的權限沒太理解
root用戶具有最高的權限,也就是超級用戶,root用戶可以看到數據庫中的所有的內容,而其它用戶只能對經過root用戶授權過的數據庫進行操作,如果想在其它用戶中創建新的數據庫 而對root用戶不可見,是不行的,而將其它用戶的權限設置成:
grant all on *.* to 'my_user'@'localhost';
這時,其它用戶的權限相當於root 用戶,沒有實際意義。
revoke all on *.* from 'my_user'@'localhost';//回收用戶的權限
grant all on db.* to 'my_user'@'localhost';//只授予對db數據庫的操作權限
grant select(stu_no) on db.stu to 'my_user'@'localhost';//只授予對db數據庫的stu表的stu_no列的select權限 列級授權
select * from mysql.user
查看用戶的權限,注:此時查看到的是全局權限,也就是對所有數據庫的操作權限而:
grant all on *.* to 'my_user'@'localhost';//授予的是數據庫權限,全局權限>數據庫權限,當全局權限不滿足條件時再查看數據庫權限
修改全局權限:
update mysql.user set Create_priv='Y' where user='my_user';此時會報錯,因為mysql安全模式下非主鍵無法執行update和delete操作
這時查看mysql.user 表:
desc mysql.user
這張表中host和user是組合主鍵,所以有兩種修改方法:
①set sql_safe_updates=0;
②update mysql.user set Create_priv='Y where user='my_user' and host='localhost';
查看授予給指定用戶的權限
show grants for 'my_user'@'localhost'