萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> MySql學習筆記用戶創建、授權、刪除、改密碼

MySql學習筆記用戶創建、授權、刪除、改密碼

MySql學習筆記有最簡單的查詢也有權限的一些操作,下面我們一起來看一篇MySql學習筆記用戶創建、授權、刪除、改密碼例子,希望例子能夠幫助到各位。


對於mysql的用戶管理,連接各個數據庫時候最好不要用root帳號,需要分配對應的用戶,保證mysql數據庫的安全和方便用戶管理。

一:用戶創建

方法1:執行命令

mysql》 CREATE USER 'username'@'host' IDENTIFIED BY 'password';

參數分析:

username:用戶名
host:指定用戶可以登錄的主機,本地登錄的話是localhost,遠程登錄的話是 % 通配符,還可以指定單獨的ip
password:用戶登錄密碼,不指定的話用戶可以不輸入密碼就可登錄

例子:

mysql> CREATE USER 'lxh'@'localhost' IDENTIFIED BY '123456'; //只允許本地登錄
mysql> CREATE USER 'lxh'@'%' IDENTIFIED BY '123456'; //允許用戶遠程登錄
mysql> CREATE USER 'lxh'@'%' IDENTIFIED BY ''; //允許用戶可不輸入密碼登錄(建議不要這樣做)

方法2:直接忘mysql數據庫中的user表插入用戶數據

mysql> user mysql;
mysql> insert into user(Host,User,Password) values("localhost","lxh",password("123456"));

二:用戶授權

首先得登錄root帳號(或者有可以授權權限的帳號)

全部權限授權:

mysql> GRANT all privileges ON databasename.tablename TO 'username'@'host';

部分權限授權

mysql> GRANT SELECT, INSERT ON databasename.tablename TO 'username'@'host';

參數分析:
databasename:要授權的數據庫名稱 ,如果是全部的數據庫,可以用 *
tablename:要授權的數據庫中的表名稱,如果是全部的表,可以用 *
username:mysql用戶名稱
host:主機名稱,可以使本機 localhost,也可以是遠程 % (這要看用戶是本機用戶還是遠程用戶)

ps:如果想讓用戶可以給其他用戶授權,執行以下命令即可:

mysql> GRANT all privileges ON databasename.tablename TO ‘username’@’host’ WITH GRANT OPTION;

授權後記得刷新下系統權限表:

mysql> flush privileges;

三:修改用戶的密碼

mysql> grant   all   privileges   on   databasename.*   to   username@localhost   identified   by   'newpwd';

或者直接利用mysql語句執行

mysql> update mysql.user set password=password('新密碼') where User="lxh" and Host="localhost";

四:刪除用戶

mysql> Delete FROM user Where User="lxh" and Host="localhost";
mysql>  flush privileges;

ps:每次的更新操作後最好執行刷新系統權限表 flush privileges;


五:查看用戶權限的兩種方法

一. 使用MySQL grants

 

mysql> show grants for username@localhost;
實例:
mysql> show grants for root@localhost;
+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------+
1 row in set (0.01 sec)

 二. 直接通過mysql select查詢語句:

mysql> select * from mysql.user where user='test' and host='127.0.0.1' \G;
*************************** 1. row ***************************
                  Host: 127.0.0.1
                  User: test
              Password: *EB3C643405D7F53BD4BF7FBA98DCF5641E228833
           Select_priv: N
           Insert_priv: N
           Update_priv: N
           Delete_priv: N
           Create_priv: N
             Drop_priv: N
           Reload_priv: N
         Shutdown_priv: N
          Process_priv: N
             File_priv: N
            Grant_priv: N
       References_priv: N
            Index_priv: N
            Alter_priv: N
          Show_db_priv: N
            Super_priv: N
 Create_tmp_table_priv: N
      Lock_tables_priv: N
          Execute_priv: N
       Repl_slave_priv: N
      Repl_client_priv: N
      Create_view_priv: N
        Show_view_priv: N
   Create_routine_priv: N
    Alter_routine_priv: N
      Create_user_priv: N
            Event_priv: N
          Trigger_priv: N
Create_tablespace_priv: N
              ssl_type:
            ssl_cipher:
           x509_issuer:
          x509_subject:
         max_questions: 0
           max_updates: 0
       max_connections: 0
  max_user_connections: 0
                plugin: mysql_native_password
 authentication_string:
      password_expired: N
1 row in set (0.00 sec)
可以看到Select_priv,Insert_priv,Update_priv...等為N表示沒有權限,該用戶權限一目了然.這時可以使用命令


六:grant 普通數據用戶,查詢、插入、更新、刪除 數據庫中所有表數據的權利。

grant select on testdb.* to common_user@’%’

grant insert on testdb.* to common_user@’%’

grant update on testdb.* to common_user@’%’

grant delete on testdb.* to common_user@’%’

或者,用一條 MySQL 命令來替代:

grant select, insert, update, delete on testdb.* to common_user@’%’

9>.grant 數據庫開發人員,創建表、索引、視圖、存儲過程、函數。。。等權限。

grant 創建、修改、刪除 MySQL 數據表結構權限。

grant create on testdb.* to developer@’192.168.0.%’;

grant alter on testdb.* to developer@’192.168.0.%’;

grant drop on testdb.* to developer@’192.168.0.%’;

grant 操作 MySQL 外鍵權限。

grant references on testdb.* to developer@’192.168.0.%’;

grant 操作 MySQL 臨時表權限。

grant create temporary tables on testdb.* to developer@’192.168.0.%’;

grant 操作 MySQL 索引權限。

grant index on testdb.* to developer@’192.168.0.%’;

grant 操作 MySQL 視圖、查看視圖源代碼 權限。

grant create view on testdb.* to developer@’192.168.0.%’;

grant show view on testdb.* to developer@’192.168.0.%’;

grant 操作 MySQL 存儲過程、函數 權限。

grant create routine on testdb.* to developer@’192.168.0.%’; -- now, can show procedure status

grant alter routine on testdb.* to developer@’192.168.0.%’; -- now, you can drop a procedure

grant execute on testdb.* to developer@’192.168.0.%’;

10>.grant 普通 DBA 管理某個 MySQL 數據庫的權限。

grant all privileges on testdb to dba@’localhost’

其中,關鍵字 “privileges” 可以省略。

11>.grant 高級 DBA 管理 MySQL 中所有數據庫的權限。

grant all on *.* to dba@’localhost’

12>.MySQL grant 權限,分別可以作用在多個層次上。

1. grant 作用在整個 MySQL 服務器上:

grant select on *.* to dba@localhost; -- dba 可以查詢 MySQL 中所有數據庫中的表。

grant all on *.* to dba@localhost; -- dba 可以管理 MySQL 中的所有數據庫

2. grant 作用在單個數據庫上:

grant select on testdb.* to dba@localhost; -- dba 可以查詢 testdb 中的表。

3. grant 作用在單個數據表上:

grant select, insert, update, delete on testdb.orders to dba@localhost;

4. grant 作用在表中的列上:

grant select(id, se, rank) on testdb.apache_log to dba@localhost;

5. grant 作用在存儲過程、函數上:

grant execute on procedure testdb.pr_add to ’dba’@’localhost’

grant execute on function testdb.fn_add to ’dba’@’localhost’

注意:修改完權限以後 一定要刷新服務,或者重啟服務,刷新服務用:FLUSH PRIVILEGES。

copyright © 萬盛學電腦網 all rights reserved