Heim  >  Artikel  >  Datenbank  >  MySQL ändert die IP-Einschränkungsbedingungen des Kontos, um Beispiele freizugeben

MySQL ändert die IP-Einschränkungsbedingungen des Kontos, um Beispiele freizugeben

小云云
小云云Original
2018-01-06 13:44:351438Durchsuche

Dieser Artikel führt Sie hauptsächlich in die relevanten Informationen zum Ändern der IP-Einschränkungen von MySQL-Konten ein. Der Artikel stellt es ausführlich anhand von Beispielcode vor. Ich hoffe, es hat einen gewissen Referenz- und Lernwert kann jedem helfen.

Vorwort

Ich bin kürzlich bei der Arbeit auf eine Anforderung gestoßen: Um die Berechtigungen von MySQL-Benutzern zu ändern, muss der Zugriff auf bestimmte IP-Adressen eingeschränkt werden. Dies ist das erste Mal, dass ich auf eine solche Anforderung stoße , und das Ergebnis wurde beim Aktualisieren der Systemberechtigungen wie folgt festgestellt:

Hinweis: Bei der Testumgebung handelt es sich um MySQL 5.6.20 Die folgenden Versionen und Testergebnisse beziehen 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, ich erhalte jetzt eine Anfrage: Dieser Benutzer erlaubt nur den Zugriff auf diese IP-Adresse 192.168.103.17, daher habe ich vor, die mysql.user-Tabelle 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 auf diese Weise ändern, wie unten gezeigt. Wenn Sie mysql.db und mysql.tables_priv abfragen, werden Sie dies tun Ich habe 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 habe ich die Tabellen mysql.db und mysql.tables_priv weiter geändert, und dann war die Testüberprüfung endlich in Ordnung (siehe Wenn das Konto über mehr als diese Berechtigungsstufen verfügt, müssen Sie möglicherweise auch Tabellen wie mysql.columns_priv, mysql.procs_priv usw. ändern.

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-Einschränkungen des Benutzers ändern müssen, ist es eigentlich nicht die beste Idee, die MySQL-bezogenen Berechtigungstabellen zu aktualisieren. Tatsächlich gibt es einen besseren Weg, nämlich die RENAME USER-Syntax

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

Verwandte Empfehlungen:

Beispielerklärung einer MySQL-Änderung, um eine Remoteverbindung zu ermöglichen

Zusammenfassung der Anwendungsbeispiele für MySQL zum Ändern von Datenbanktabellen

Detaillierte Erläuterung von Beispielen zum Ändern von Passwörtern und Zugriffsbeschränkungen in MySQL

Das obige ist der detaillierte Inhalt vonMySQL ändert die IP-Einschränkungsbedingungen des Kontos, um Beispiele freizugeben. 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