標籤:辛星 mysql 使用者管理 使用者 管理
可能做開發的多半不太關注這方面,但是要說到做營運,那就不能不關注了。因為我們都知道,root的許可權太大了,不是隨便能用的,我們平時最好用一些比較低的許可權的使用者,這樣會讓我們的安全性大大提高,也能防止我們平常中因為誤操作而造成不必要的損失。
首先我們需要查看mysql中的所有賬戶,我們在mysql資料庫中的user表中查看資訊即可,但是呢,由於我們直接select * from user的話會顯示很多的和許可權相關的資訊,極大的影響我們的閱讀,因此我們這裡只查看三個比較重要的欄位,下面是我的機器中的操作示範:
mysql> select host,user,password from mysql.user;+-----------+------+-------------------------------------------+| host | user | password |+-----------+------+-------------------------------------------+| localhost | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B || 127.0.0.1 | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B || ::1 | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |+-----------+------+-------------------------------------------+3 rows in set (0.00 sec)
然後我們建立一個使用者,這裡我們需要制定使用者名稱和串連的地址,也就是一樣的使用者名稱(user),不一樣的host,也會被當做不一樣的對象,我們可以使用萬用字元,其中%表示匹配任何多個字元,而-表示匹配一個字元。下面我建立一個使用者test,並且制定密碼為xin,而且可以從任何主機登入,看我操作:
mysql> create user 'test'@'%' identified by 'xin';Query OK, 0 rows affected (0.23 sec)
這裡我們用該使用者登入的資訊顯示如下:
C:\Users\Administrator>mysql -u test -pxinmysql: [Warning] Using a password on the command line interface can be insecure.Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 14Server version: 5.7.3-m13 MySQL Community Server (GPL)Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>
比如我們此時想查看一下user資訊都有什麼,結果卻發現:
mysql> select host,user,password from mysql.user;ERROR 1142 (42000): SELECT command denied to user 'test'@'localhost' for table 'user'mysql>
也就是我們這裡並不用有select該user表的許可權,那麼就會涉及到許可權管理了,我們這裡可以用show grants來查看一下自己的許可權:
mysql> show grants;+-----------------------------------------------------------------------------------------------------+| Grants for [email protected]% |+-----------------------------------------------------------------------------------------------------+| GRANT USAGE ON *.* TO 'test'@'%' IDENTIFIED BY PASSWORD '*76995602B7611FA37648852F235D6ECB29D844E2' |+-----------------------------------------------------------------------------------------------------+1 row in set (0.00 sec)
由於這裡的test使用者的許可權還是很小的,我們還是使用root使用者登入,然後此時我們看一下使用者表,就發現多了一個新使用者:
mysql> select host,user,password from mysql.user;+-----------+------+-------------------------------------------+| host | user | password |+-----------+------+-------------------------------------------+| localhost | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B || 127.0.0.1 | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B || ::1 | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B || % | test | *76995602B7611FA37648852F235D6ECB29D844E2 |+-----------+------+-------------------------------------------+4 rows in set (0.00 sec)
root使用者具有至高無上的許可權,因此他可以修改密碼,第一種方式就是使用set password語句,比如我們給剛才的新使用者佈建一個密碼,我們可以使用如下命令:
mysql> set password for 'test'@'%' = password('qian');Query OK, 0 rows affected (0.00 sec)
此時我們就可以使用test這個使用者登入了,下面看我代碼:
C:\Users\Administrator>mysql -u test -pqianmysql: [Warning] Using a password on the command line interface can be insecure.Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 17Server version: 5.7.3-m13 MySQL Community Server (GPL)Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>
其實我們還可以直接使用update語句來修改user這個表,但是我們需要使用flush privileges;來讓它立即生效:
mysql> update mysql.user set password = password('nan') where user = 'test';Query OK, 1 row affected (0.05 sec)Rows matched: 1 Changed: 1 Warnings: 0mysql> flush privileges;Query OK, 0 rows affected (0.03 sec)
然後我們就可以用‘nan‘這個密碼登入了,我這裡就不給出示範代碼了,畢竟很簡單的操作,我是辛星,求支援。
辛星解讀mysql的使用者管理