MySql 用戶 及權限操作


bin/msyql -h host -u user -p 
  bin/mysql -u mysql -p  本地登錄 如無密碼按回車直接進入mySql
  bin/mysqladmin -u root -p 原密碼  password 123456  修改mysql 的 root密碼為 123456
  bin/mysqladmin -u root  password 123456  修改mysql 的 root密碼為 123456
 
 前提是必須用 root 登錄 mysql
  UPDATE  mysql.user SET password=PASSWORD('123456') WHERE user='root'; 
  flush privileges;
 
登錄后修改用戶密碼,退出再重新登錄就需要密碼了;
 update mysql.user set password=PASSWORD('123456') where user='mysql' and Host="localhost";
 flush privileges;  
 
刪除用戶
mysql>DELETE FROM user WHERE User="phplamp" and Host="localhost";
mysql>flush privileges; 
 
//刪除用戶的數據庫
mysql>drop database phplampDB;
 
新建登錄MYSQL用戶 用 root 登錄:創建了一個名為:phplamp  密碼為:1234  的用戶。
mysql> insert into mysql.user(Host,User,Password) values("localhost","phplamp",password("1234"));
mysql>flush privileges;
 
創建權限的語法:(把密碼改成了 password  identified by 相當於把密碼給修改了)
grant  privileges (columns) on what to user identified by "password" with grant option
給 mysql 用戶最大的權限 
GRANT ALL ON *.* TO  mysql@localhost IDENTIFIED BY "coffee" WITH GRANT OPTION
 
GRANT Select ON samp_db.member TO bill@localhost INDETIFIED BY "rock"
GRANT Update (expiration) ON samp_db. member TO bill@localhost
第一條語句授予對整個member表的讀權限並設置了一個口令,第二條語句增加了Update權限,當只對expiration列。沒必要再指定口令,因為第一條語句已經指定了。
 
GRANT Select ON samp_db TO ro_user@% INDETIFIED BY "rock"
第一條語句向bill授權samp_db數據庫中所有表的權限,第二條創建一個嚴格限制訪問的用戶ro_user(只讀用戶),只能訪問samp_db數據庫中的所有表,但只有讀取,即用戶只能發出Select語句。
 
 
show grants for 'mysql'@'localhost'    查看權限
 
GRANT  ALL PRIVILEGES ON *.* TO 'mysql'@'localhost’ WITH GRANT OPTION   賦予mysql最高權限;
 
所有的權限為:
       Alter   修改表和索引
  Create  創建數據庫和表
  Delete  刪除表中已有的記錄
  Drop    拋棄(刪除)數據庫和表
  INDEX  創建或拋棄索引
  Insert     向表中插入新行
  REFERENCE   未用
  Select     檢索表中的記錄
  Update      修改現存表記錄
  FILE       讀或寫服務器上的文件
  PROCESS    查看服務器中執行的線程信息或殺死線程
  RELOAD     重載授權表或清空日志、主機緩存或表緩存。
  SHUTDOWN   關閉服務器
  ALL       所有;ALL PRIVILEGES同義詞
  USAGE     特殊的“無權限”權限
 
columns   權限運用的列,它是可選的,並且你只能設置列特定的權限。如果命令有多於一個列,應該用逗號分開它們。
what   權限運用的級別。權限可以是全局的(適用於所有數據庫和所有表)、特定數據庫(適用於一個數據庫中的所有表)或特定表的。可以通過指定一個columns字句是權限是列特定的。
user   權限授予的用戶,它由一個用戶名和主機名組成。在MySQL中,你不僅指定誰能連接,還有從哪里連接。這允許你讓兩個同名用戶從不同地方連接。 MySQL讓你區分他們,並彼此獨立地賦予權限。MySQL中的一個用戶名就是你連接服務器時指定的用戶名,該名字不必與你的Unix登錄名或 Windows名聯系起來。缺省地,如果你不明確指定一個名字,客戶程序將使用你的登錄名作為MySQL用戶名。這只是一個約定。你可以在授權表中將該名 字改為nobody,然后以nobody連接執行需要超級用戶權限的操作。
password   賦予用戶的口令,它是可選的。如果你對新用戶沒有指定IDENTIFIED BY子句,該用戶不賦給口令(不安全)。對現有用戶,任何你指定的口令將代替老口令。如果你不指定口令,老口令保持不變,當你用IDENTIFIED BY時,口令字符串用改用口令的字面含義,GRANT將為你編碼口令,不要你用SET PASSWORD 那樣使用password()函數。
WITH GRANT OPTION   子句是可選的。如果你包含它,用戶可以授予權限通過GRANT語句授權給其它用戶。你可以用該子句給與其它用戶授權的能力。
 
修改及刪除權限操作:http://linux.chinaitlab.com/MYSQL/919856_1.html
REVOKE語句 取消一個用戶的權限  REVOKE的語法非常類似於GRANT語句,除了TO用FROM取代並且沒有INDETIFED BY和WITH GRANT OPTION子句
REVOKE privileges (columns) ON what FROM user
user 部分必須匹配原來GRANT語句的你想撤權的用戶的user部分。
privileges  部分不需匹配,你可以用GRANT語句授權,然后用REVOKE語句只撤銷部分權限。

REVOKE  語句只刪除權限,而不刪除用戶。即使你撤銷了所有權限,在user表中的用戶記錄依然保留,這意味着用戶仍然可以連接服務器。要完全刪除一個用戶,你必須用一條Delete語句明確從user表中刪除用戶記錄:
%mysql -u root mysqlmysql>Delete FROM user 
->Where User="user_name" and Host="host_name";
mysql>FLUSH PRIVILEGES;

Delete  語句刪除用戶記錄,而FLUSH語句告訴服務器重載授權表。(當你使用GRANT和REVOKE語句時,表自動重載,而你直接修改授權表時不是。)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM