Eine der grundlegenden Aufgaben beim Verwalten von MySQL-Datenbanken ist das Verwalten von Benutzern und deren Berechtigungen . Heute machen wir den ersten Schritt mit einem einfachen Tutorial, das als Einführung dient und darin besteht, alle MySQL-Benutzer von der Konsole oder dem Terminal aus aufzulisten .
Wir beginnen damit, dass wir etwas sehr Grundlegendes sagen, und dass es für fortgeschrittene Benutzer vernünftig erscheinen mag, aber es ist mir schon mehrmals passiert, dass neue Benutzer glauben, dass Systembenutzer MySQL-Benutzer sind, und dies ist nicht der Fall. Das Systembenutzersystem arbeitet unabhängig vom MySQL-Benutzersystem.
Stellen Sie jedoch auch klar, dass dieses Tutorial für MySQL- und MariaDB-Datenbanksysteme gültig ist .
So listen Sie alle MySQL- oder MariaDB-Benutzer in der Konsole auf.
Zunächst müssen wir vom Terminal aus auf den MySQL- oder MariaDB-Server zugreifen , was wir in diesem Tutorial bereits ausführlich erklären. Wir müssen auf unseren MySQL-Root-Benutzer zugreifen, da wir diese Berechtigungen benötigen, um auf die mysql-Namensdatenbank zugreifen zu können, die uns interessiert, um die Benutzer herauszufinden.
Der Befehl, auf den wir zugreifen, lautet daher:
mysql -u root -p mysql
Sobald wir als root auf den MySQL-Befehlsinterpreter zugegriffen haben, können wir die notwendigen Abfragen starten, die wir unten sehen werden.
Zeigen Sie die MySQL-Datenbanktabellen an.
Nachdem wir nun Zugriff auf die mysql
Datenbank haben, können wir damit arbeiten, indem wir die folgende Abfrage starten, um den Namen der Tabellen herauszufinden:
show tables;
MariaDB [mysql]> show tables; +---------------------------+ | Tables_in_mysql | +---------------------------+ | column_stats | | columns_priv | | db | | event | | func | | general_log | | gtid_slave_pos | | help_category | | help_keyword | | help_relation | | help_topic | | host | | index_stats | | innodb_index_stats | | innodb_table_stats | | plugin | | proc | | procs_priv | | proxies_priv | | roles_mapping | | servers | | slow_log | | table_stats | | tables_priv | | time_zone | | time_zone_leap_second | | time_zone_name | | time_zone_transition | | time_zone_transition_type | | user | +---------------------------+ 30 rows in set (0.00 sec)
Wir sehen, dass zwischen allen Tabellen ein user
ist, was uns interessiert, da hier alle Informationen zu MySQL / MariaDB-Benutzern gespeichert werden .
Um die Spalten der user
, starten wir die folgende Abfrage:
describe user;
MariaDB [mysql]> describe user; +------------------------+-----------------------------------+------+-----+----------+-------+ | Field | Type | Null | Key | Default | Extra | +------------------------+-----------------------------------+------+-----+----------+-------+ | Host | char(60) | NO | PRI | | | | User | char(80) | NO | PRI | | | | Password | char(41) | NO | | | | | Select_priv | enum('N','Y') | NO | | N | | | Insert_priv | enum('N','Y') | NO | | N | | | Update_priv | enum('N','Y') | NO | | N | | | Delete_priv | enum('N','Y') | NO | | N | | | Create_priv | enum('N','Y') | NO | | N | | | Drop_priv | enum('N','Y') | NO | | N | | | Reload_priv | enum('N','Y') | NO | | N | | | Shutdown_priv | enum('N','Y') | NO | | N | | | Process_priv | enum('N','Y') | NO | | N | | | File_priv | enum('N','Y') | NO | | N | | | Grant_priv | enum('N','Y') | NO | | N | | | References_priv | enum('N','Y') | NO | | N | | | Index_priv | enum('N','Y') | NO | | N | | | Alter_priv | enum('N','Y') | NO | | N | | | Show_db_priv | enum('N','Y') | NO | | N | | | Super_priv | enum('N','Y') | NO | | N | | | Create_tmp_table_priv | enum('N','Y') | NO | | N | | | Lock_tables_priv | enum('N','Y') | NO | | N | | | Execute_priv | enum('N','Y') | NO | | N | | | Repl_slave_priv | enum('N','Y') | NO | | N | | | Repl_client_priv | enum('N','Y') | NO | | N | | | Create_view_priv | enum('N','Y') | NO | | N | | | Show_view_priv | enum('N','Y') | NO | | N | | | Create_routine_priv | enum('N','Y') | NO | | N | | | Alter_routine_priv | enum('N','Y') | NO | | N | | | Create_user_priv | enum('N','Y') | NO | | N | | | Event_priv | enum('N','Y') | NO | | N | | | Trigger_priv | enum('N','Y') | NO | | N | | | Create_tablespace_priv | enum('N','Y') | NO | | N | | | ssl_type | enum('','ANY','X509','SPECIFIED') | NO | | | | | ssl_cipher | blob | NO | | NULL | | | x509_issuer | blob | NO | | NULL | | | x509_subject | blob | NO | | NULL | | | max_questions | int(11) unsigned | NO | | 0 | | | max_updates | int(11) unsigned | NO | | 0 | | | max_connections | int(11) unsigned | NO | | 0 | | | max_user_connections | int(11) | NO | | 0 | | | plugin | char(64) | NO | | | | | authentication_string | text | NO | | NULL | | | password_expired | enum('N','Y') | NO | | N | | | is_role | enum('N','Y') | NO | | N | | | default_role | char(80) | NO | | | | | max_statement_time | decimal(12,6) | NO | | 0.000000 | | +------------------------+-----------------------------------+------+-----+----------+-------+ 46 rows in set (0.00 sec)
Wir sehen, dass es eine Spalte mit dem Namen User
in der alle Benutzernamen gespeichert sind.
Holen Sie sich alle MySQL-Benutzer.
Jetzt ist es Zeit, allen MySQL-Benutzern die Abfrage anzuzeigen:
select User from user;
MariaDB [mysql]> select User from user; +------------------+ | User | +------------------+ | root | | blog_wp | | foro_dev | | joomla_test | +------------------+ 4 rows in set (0.00 sec)
In diesem Beispiel sehen wir, dass wir vier verschiedene Benutzer haben.
In der Regel werden auch andere Benutzerdaten wie das Passwort oder der Host abgerufen. Dies erreichen wir mit folgender Abfrage:
select User,Password,Host from user;
MariaDB [mysql]> select User,Password,Host from user; +------------------+-------------------------------------------+-----------+ | User | Password | Host | +------------------+-------------------------------------------+-----------+ | root | *FEB88477570B28D1977U7CF6DA702P3DF79CB282 | localhost | | blog_wp | *4AB88HC7570218D197669CF6DA702K9DFC79H2PM | localhost | | foro_dev | *D6B8847797GB28P197669CF6DA932F5K12C9TTF2 | localhost | | joomla_test | *1B0569321682F7E857C469B2DD2A4F08384CC6HE | localhost | +------------------+-------------------------------------------+-----------+ 4 rows in set (0.00 sec)
Darüber hinaus können Benutzer unterschiedliche Berechtigungen haben, und wir können sie auch aus derselben Tabelle _priv
, in der die Felder, die mit dem Präfix _priv
auf eine Art von Berechtigung verweisen. Beispiel: Insert_priv
teilt uns mit, ob der Benutzer über ausreichende Berechtigungen verfügt, um die INSERT
.
Konsultieren Sie die Benutzer und die Datenbanken, die sie zugewiesen haben.
Abschließend verwenden wir die Tabelle db
, in der ermittelt werden kann, auf welche Datenbanken verschiedene Benutzer Zugriff haben . Dafür verwenden wir die Abfrage:
select Host,Db,User from db;
MariaDB [mysql]> select Host,Db,User from db; +-----------+--------+---------+ | Host | Db | User | +-----------+--------+---------+ | localhost | blog | root | | localhost | ttrss | root | | localhost | wp_db | root | | localhost | wp_db | blog_wp | +-----------+--------+---------+ 4 rows in set (0.00 sec)
In diesem Fall hat der root
Benutzer Zugriff auf drei Datenbanken (blog, ttrss und wp_db), während der Benutzer blog_wp
nur auf eine Datenbank (wp_db) zugreifen kann.
Bisher in diesem Tutorial, da es sich um ein einfaches Tutorial handelt und ich keine komplexere Erklärung abgeben möchte. Ich hoffe, es hat Ihnen geholfen, MySQL-Benutzer zu finden, und wenn Sie Fragen haben, finden Sie die Kommentare zu Ihrem Dienst.