Heim  >  Artikel  >  Datenbank  >  Ausführliche Erklärung, wie man die IP-Einschränkungsbedingungen eines Kontos in MySQL ändert

Ausführliche Erklärung, wie man die IP-Einschränkungsbedingungen eines Kontos in MySQL ändert

黄舟
黄舟Original
2017-09-02 13:53:221537Durchsuche

Dieser Artikel führt Sie hauptsächlich in die relevanten Informationen zum Ändern der IP-Einschränkungen von MySQL-Konten ein. Der Artikel stellt ihn ausführlich anhand von Beispielcode vor. Er hat einen bestimmten Referenz- und Lernwert für alle, die ihn benötigen Lass es uns mit dem untenstehenden Editor lernen.

Vorwort

Ich bin kürzlich bei der Arbeit auf einen Bedarf gestoßen: Das Ändern der Berechtigungen von MySQL-Benutzern erfordert die Beschränkung des Zugriffs auf bestimmte IP-Adressen Als Ergebnis habe ich während des Testvorgangs einige Probleme bei der Verwendung des Update-System-Berechtigungsberichts festgestellt.

Hinweis : Die folgende Testumgebung ist MySQL 5.6.20. Wenn es Abweichungen zwischen anderen Versionen und den folgenden Testergebnissen gibt, beziehen Sie sich bitte auf die tatsächliche Umgebung.

Wir erstellen zunächst einen Testbenutzer LimitIP, der nur den Zugriff auf IP-Adressen im Segment 192.168 erlaubt. Die spezifischen Berechtigungen sind wie folgt:


mysql> GRANT SELECT ON MyDB.* TO LimitIP@'192.168.%' IDENTIFIED BY 'LimitIP';
Query OK, 0 rows affected (0.01 sec)
 
mysql> GRANT INSERT ,UPDATE,DELETE ON MyDB.kkk TO LimitIP@'192.168.%';
Query OK, 0 rows affected (0.00 sec)
 
mysql> 
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
 
mysql> 
 
mysql> show grants for LimitIP@'192.168.%';
+----------------------------------------------------------------------------------------------------------------+
| Grants for LimitIP@192.168.%                     |
+----------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'LimitIP'@'192.168.%' IDENTIFIED BY PASSWORD '*72DDE03E02CC55A9478A82F3F4EBE7F639249DEC' |
| GRANT SELECT ON `MyDB`.* TO 'LimitIP'@'192.168.%'                |
| GRANT INSERT, UPDATE, DELETE ON `MyDB`.`kkk` TO 'LimitIP'@'192.168.%'           |
+----------------------------------------------------------------------------------------------------------------+
3 rows in set (0.00 sec)
 
mysql>

Angenommen, jetzt geht eine Anfrage ein: Dieser Benutzer erlaubt nur den Zugriff auf diese IP-Adresse 192.168.103.17, daher habe ich vor, die Tabelle mysql.user wie folgt zu aktualisieren:


mysql> select user, host from mysql.user where user='LimitIP';
+---------+-----------+
| user | host  |
+---------+-----------+
| LimitIP | 192.168.% |
+---------+-----------+
1 row in set (0.00 sec)
 
mysql> update mysql.user set host='192.168.103.17' where user='LimitIP';
Query OK, 1 row affected (0.02 sec)
Rows matched: 1 Changed: 1 Warnings: 0
 
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
 
mysql> select user, host from user where user='LimitIP';
ERROR 1046 (3D000): No database selected
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
 
Database changed
mysql> select user, host from user where user='LimitIP';
+---------+----------------+
| user | host   |
+---------+----------------+
| LimitIP | 192.168.103.17 |
+---------+----------------+
1 row in set (0.00 sec)
 
mysql> show grants for LimitIP@'192.168.103.17';
+---------------------------------------------------------------------------------------------------------------------+
| Grants for LimitIP@192.168.103.17                     |
+---------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'LimitIP'@'192.168.103.17' IDENTIFIED BY PASSWORD '*72DDE03E02CC55A9478A82F3F4EBE7F639249DEC' |
+---------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
 
mysql>

Der obige Test ergab, dass die vorherigen Berechtigungen verloren gehen, wenn Sie nur die Tabelle mysql.user ändern Wie unten gezeigt, hat mysql.tables_priv beim Abfragen von mysql.db festgestellt, dass der Feldwert von Host immer noch 192,168 % beträgt


mysql> select * from mysql.db where user='LimitIP'\G;
*************************** 1. row ***************************
     Host: 192.168.%
     Db: MyDB
     User: LimitIP
   Select_priv: Y
   Insert_priv: N
   Update_priv: N
   Delete_priv: N
   Create_priv: N
   Drop_priv: N
   Grant_priv: N
  References_priv: N
   Index_priv: N
   Alter_priv: N
Create_tmp_table_priv: N
  Lock_tables_priv: N
  Create_view_priv: N
  Show_view_priv: N
 Create_routine_priv: N
 Alter_routine_priv: N
   Execute_priv: N
   Event_priv: N
   Trigger_priv: N
1 row in set (0.00 sec)
 
ERROR: 
No query specified
 
mysql> select * from mysql.tables_priv where user='LimitIP'\G;
*************************** 1. row ***************************
  Host: 192.168.%
   Db: MyDB
  User: LimitIP
 Table_name: kkk
 Grantor: root@localhost
 Timestamp: 0000-00-00 00:00:00
 Table_priv: Insert,Update,Delete
Column_priv: 
1 row in set (0.00 sec)
 
ERROR: 
No query specified

, also fuhr ich fort Ändern Sie die Tabellen mysql.db und mysql.tables_priv und testen Sie sie. Die Überprüfung ist schließlich in Ordnung (siehe Testschritte unten). Wenn das Konto über mehr als diese Berechtigungsstufen verfügt, müssen Sie möglicherweise auch Tabellen ändern wie mysql.columns_priv, mysql.procs_priv usw.


mysql> show grants for LimitIP@'192.168.%';
ERROR 1141 (42000): There is no such grant defined for user 'LimitIP' on host '192.168.%'
mysql> 
mysql> 
mysql> update mysql.db set host='192.168.103.17' where user='LimitIP';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
 
mysql> update mysql.tables_priv set host='192.168.103.17' where user='LimitIP';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
 
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
 
mysql> show grants for LimitIP@'192.168.103.17';
+---------------------------------------------------------------------------------------------------------------------+
| Grants for LimitIP@192.168.103.17                     |
+---------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'LimitIP'@'192.168.103.17' IDENTIFIED BY PASSWORD '*72DDE03E02CC55A9478A82F3F4EBE7F639249DEC' |
| GRANT SELECT ON `MyDB`.* TO 'LimitIP'@'192.168.103.17'                |
| GRANT INSERT, UPDATE, DELETE ON `MyDB`.`kkk` TO 'LimitIP'@'192.168.103.17'           |
+---------------------------------------------------------------------------------------------------------------------+
3 rows in set (0.00 sec)
 
mysql>

Wenn Sie die IP des Benutzers ändern müssen Einschränkungen ist es nicht die beste Idee, die MySQL-bezogene Berechtigungstabelle zu aktualisieren. Tatsächlich gibt es einen besseren Weg, nämlich die RENAME USER-Syntax >

Zusammenfassung


Das obige ist der detaillierte Inhalt vonAusführliche Erklärung, wie man die IP-Einschränkungsbedingungen eines Kontos in MySQL ändert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn