рдкрд╛рд╕рд╡рд░реНрдб рдмрд┐рдирд╛ MySQL рдХрд╕рд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ (рд░ рд╕реБрд░рдХреНрд╖рд╛ рдЬреЛрдЦрд┐рдо)

рдкрд╛рд╕рд╡рд░реНрдб рдмрд┐рдирд╛ MySQL рдХрд╕рд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ (рд░ рд╕реБрд░рдХреНрд╖рд╛ рдЬреЛрдЦрд┐рдо)

рддрд┐рдиреАрд╣рд░реВ рднрдиреНрдЫрдиреН рдХрд┐ рд╕рдмреИ рднрдиреНрджрд╛ рд░рд╛рдореНрд░реЛ рдкрд╛рд╕рд╡рд░реНрдб рдПрдХ рд╣реЛ рдЬреБрди рддрдкрд╛рдИрд▓реЗ рд╕рдореНрдЭрдиреБ рдкрд░реНрджреИрдиред MySQL рдХреЛ рдорд╛рдорд▓рд╛ рдорд╛ рдпреЛ рд╕рдореНрднрд╡ рдЫ рдкреНрд▓рдЧрдЗрди рдХреЛ рд▓рд╛рдЧреА рдзрдиреНрдпрд╡рд╛рдж auth_socket рд░ MariaDB рдХреЛ рд▓рд╛рдЧрд┐ рдпрд╕рдХреЛ рд╕рдВрд╕реНрдХрд░рдг - unix_sket.

рдпреА рджреБрдмреИ рдкреНрд▓рдЧрдЗрдирд╣рд░реВ рдмрд┐рд▓реНрдХреБрд▓ рдирдпрд╛рдБ рдЫреИрдирдиреН; рддрд┐рдиреАрд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдзреЗрд░реИ рдХреБрд░рд╛ рдпрд╣реА рдмреНрд▓рдЧрдорд╛ рднрдирд┐рдПрдХреЛ рдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ рд▓реЗрдЦрдорд╛ auth_socket рдкреНрд▓рдЧрдЗрди рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ MySQL 5.7 рдорд╛ рдкрд╛рд╕рд╡рд░реНрдбрд╣рд░реВ рдХрд╕рд░реА рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреЗред рдЬреЗ рд╣реЛрд╕реН, MariaDB 10.4 рдорд╛ рдирдпрд╛рдБ рдХреЗ рдЫ рднрдиреЗрд░ рд╣реЗрд░реНрджрд╛, рдореИрд▓реЗ рдкрддреНрддрд╛ рд▓рдЧрд╛рдПрдБ рдХрд┐ unix_socket рдЕрдм рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдЫ рд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╡рд┐рдзрд┐рд╣рд░реВ рдордзреНрдпреЗ рдПрдХ рд╣реЛ ("рдПрдХ", рдХрд┐рдирднрдиреЗ рдорд╛рд░рд┐рдпрд╛рдбреАрдмреА 10.4 рдорд╛ рдПрдХ рднрдиреНрджрд╛ рдмрдвреА рдкреНрд▓рдЧрдЗрди рдкреНрд░рдорд╛рдгреАрдХрд░рдгрдХреЛ рд▓рд╛рдЧрд┐ рдПрдХ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓рд╛рдИ рдЙрдкрд▓рдмреНрдз рдЫ, рдЬреБрдиред рджрд╕реНрддрд╛рд╡реЗрдЬрдорд╛ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЧрд░рд┐рдПрдХреЛ рдЫ MariaDB 10.04 рдмрд╛рдЯ "рдкреНрд░рдорд╛рдгреАрдХрд░рдг").

рдореИрд▓реЗ рднрдиреЗрдВ, рдпреЛ рд╕рдорд╛рдЪрд╛рд░ рд╣реЛрдЗрди, рд░ рдбреЗрдмрд┐рдпрди рдЯреЛрд▓реАрджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд .deb рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ MySQL рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрджрд╛, рд╕рдХреЗрдЯ рдкреНрд░рдорд╛рдгреАрдХрд░рдгрдХреЛ рд▓рд╛рдЧрд┐ рд░реВрдЯ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдиреНрдЫред рдпреЛ MySQL рд░ MariaDB рджреБрдмреИрдХреЛ рд▓рд╛рдЧрд┐ рд╕рддреНрдп рд╣реЛред

root@app:~# apt-cache show mysql-server-5.7 | grep -i maintainers
Original-Maintainer: Debian MySQL Maintainers <[email protected]>
Original-Maintainer: Debian MySQL Maintainers <<a href="mailto:[email protected]">[email protected]</a>>

MySQL рдХрд╛ рд▓рд╛рдЧрд┐ рдбреЗрдмрд┐рдпрди рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВрдХреЛ рд╕рд╛рде, рд░реВрдЯ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдирд┐рдореНрди рд░реВрдкрдорд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЧрд░рд┐рдПрдХреЛ рдЫ:

root@app:~# whoami
root=
root@app:~# mysql
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 4
Server version: 5.7.27-0ubuntu0.16.04.1 (Ubuntu)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

mysql> select user, host, plugin, authentication_string from mysql.user where user = 'root';
+------+-----------+-------------+-----------------------+
| user | host      | plugin | authentication_string |
+------+-----------+-------------+-----------------------+
| root | localhost | auth_socket |                       |
+------+-----------+-------------+-----------------------+
1 row in set (0.01 sec)

рдорд╛рд░рд┐рдпрд╛рдбреАрдмреА рдХреЛ рд▓рд╛рдЧреА .deb рдкреНрдпрд╛рдХреЗрдЬ рдХреЛ рдорд╛рдорд▓рд╛ рдорд╛ рд╕рдорд╛рди рдЫ:

10.0.38-MariaDB-0ubuntu0.16.04.1 Ubuntu 16.04

MariaDB [(none)]> show grants;
+------------------------------------------------------------------------------------------------+
| Grants for root@localhost                                                                      |
+------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED VIA unix_socket WITH GRANT OPTION |
| GRANT PROXY ON ''@'%' TO 'root'@'localhost' WITH GRANT OPTION                                  |
+------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

рдЖрдзрд┐рдХрд╛рд░рд┐рдХ Percona рднрдгреНрдбрд╛рд░рдмрд╛рдЯ .deb рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВрд▓реЗ рдкрдирд┐ auth-socket рдЕрдиреНрддрд░реНрдЧрдд рд░ Percona рд╕рд░реНрднрд░рдХреЛ рд▓рд╛рдЧрд┐ рд░реВрдЯ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрджрдЫред рд╕рдВрдЧ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдиреБрд╣реЛрд╕реН MySQL 8.0.16-7 рдХреЛ рд▓рд╛рдЧрд┐ Percona рд╕рд░реНрднрд░ рд░ Ubuntu 16.04:

root@app:~# whoami
root
root@app:~# mysql
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 9
Server version: 8.0.16-7 Percona Server (GPL), Release '7', Revision '613e312'

Copyright (c) 2009-2019 Percona LLC and/or its affiliates
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

mysql> select user, host, plugin, authentication_string from mysql.user where user ='root';
+------+-----------+-------------+-----------------------+
| user | host      | plugin | authentication_string |
+------+-----------+-------------+-----------------------+
| root | localhost | auth_socket |                       |
+------+-----------+-------------+-----------------------+
1 row in set (0.00 sec)

рддреНрдпрд╕реЛрднрдП рдЬрд╛рджреВ рдХреЗ рд╣реЛ? рдкреНрд▓рдЧрдЗрдирд▓реЗ SO_PEERCRED рд╕рдХреЗрдЯ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдХреНрд▓рд╛рдЗрдиреНрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЪрд▓рд╛рдЙрдиреЗ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рдХреЛ рдмрд╛рд░реЗрдорд╛ рдЬрд╛рдирдХрд╛рд░реА рд╕рдЩреНрдХрд▓рди рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рд▓рд┐рдирдХреНрд╕ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓реЗ MySQL рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдиреНрдЫ рднрдиреЗрд░ рдЬрд╛рдБрдЪ рдЧрд░реНрдЫред рддрд╕рд░реНрде, рдкреНрд▓рдЧрдЗрди SO_PEERCRED рд╡рд┐рдХрд▓реНрдкрд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрдиреЗ рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрдорд╛ рдорд╛рддреНрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рдЬрд╕реНрддреИ Linuxред SO_PEERCRED рд╕рдХреЗрдЯ рд╡рд┐рдХрд▓реНрдкрд▓реЗ рддрдкрд╛рдЗрдБрд▓рд╛рдИ рд╕рдХреЗрдЯрд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдХреЛ uid рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рд░ рддреНрдпрд╕рдкрдЫрд┐ рдЙрд╕рд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рдпреЛ uid рд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджрдЫред

рдпрд╣рд╛рдБ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ "vagrant" рд╕рдВрдЧ рдПрдЙрдЯрд╛ рдЙрджрд╛рд╣рд░рдг рдЫ:

vagrant@mysql1:~$ whoami
vagrant
vagrant@mysql1:~$ mysql
ERROR 1698 (28000): Access denied for user 'vagrant'@'localhost'

MySQL рдорд╛ "рднреНрдпрд╛рдЧреНрд░рдиреНрдЯ" рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдирднрдПрдХреЛрд▓реЗ, рд╣рд╛рдореАрд▓рд╛рдИ рдкрд╣реБрдБрдЪ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рдЫред рдпрд╕реНрддреЛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВ рд░ рдлреЗрд░рд┐ рдкреНрд░рдпрд╛рд╕ рдЧрд░реМрдВ:

MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'vagrant'@'localhost' IDENTIFIED VIA unix_socket;
Query OK, 0 rows affected (0.00 sec)

vagrant@mysql1:~$ mysql
Welcome to the MariaDB monitor.  Commands end with ; or g.
Your MariaDB connection id is 45
Server version: 10.0.38-MariaDB-0ubuntu0.16.04.1 Ubuntu 16.04
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

MariaDB [(none)]> show grants;
+---------------------------------------------------------------------------------+
| Grants for vagrant@localhost                                                    |
+---------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'vagrant'@'localhost' IDENTIFIED VIA unix_socket |
+---------------------------------------------------------------------------------+
1 row in set (0.00 sec)

рднрдпреЛ!

рдареАрдХ рдЫ, рдПрдХ рдЧреИрд░-рдбреЗрдмрд┐рдпрди рд╡рд┐рддрд░рдгрдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреЗ рд╣реЛ рдЬрд╣рд╛рдБ рдпреЛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рдкреНрд░рджрд╛рди рдЧрд░рд┐рдПрдХреЛ рдЫреИрди? CentOS 8 рдорд╛ рд╕реНрдерд╛рдкрд┐рдд MySQL 7 рдХреЛ рд▓рд╛рдЧрд┐ Percona рд╕рд░реНрднрд░ рдкреНрд░рдпрд╛рд╕ рдЧрд░реМрдВ:

mysql> show variables like '%version%comment';
+-----------------+---------------------------------------------------+
| Variable_name   | Value                                   |
+-----------------+---------------------------------------------------+
| version_comment | Percona Server (GPL), Release 7, Revision 613e312 |
+-----------------+---------------------------------------------------+
1 row in set (0.01 sec)

mysql> CREATE USER 'percona'@'localhost' IDENTIFIED WITH auth_socket;
ERROR 1524 (HY000): Plugin 'auth_socket' is not loaded

рдмрдорд░ред рдХреЗ рд╣рд░рд╛рдЗрд░рд╣реЗрдХреЛ рдерд┐рдпреЛ? рдкреНрд▓рдЧрдЗрди рд▓реЛрдб рдЧрд░рд┐рдПрдХреЛ рдЫреИрди:

mysql> pager grep socket
PAGER set to 'grep socket'
mysql> show plugins;
47 rows in set (0.00 sec)

рдкреНрд░рдХреНрд░рд┐рдпрд╛рдорд╛ рдкреНрд▓рдЧрдЗрди рдердкреМрдВ:

mysql> nopager
PAGER set to stdout
mysql> INSTALL PLUGIN auth_socket SONAME 'auth_socket.so';
Query OK, 0 rows affected (0.00 sec)

mysql> pager grep socket; show plugins;
PAGER set to 'grep socket'
| auth_socket                     | ACTIVE | AUTHENTICATION | auth_socket.so | GPL     |
48 rows in set (0.00 sec)

рдЕрдм рд╣рд╛рдореАрд╕рдБрдЧ рдЖрд╡рд╢реНрдпрдХ рд╕рдмреИ рдЫред рдлреЗрд░реА рдкреНрд░рдпрд╛рд╕ рдЧрд░реМ:

mysql> CREATE USER 'percona'@'localhost' IDENTIFIED WITH auth_socket;
Query OK, 0 rows affected (0.01 sec)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'percona'@'localhost';
Query OK, 0 rows affected (0.01 sec)

рддрдкрд╛рдИрдВ рдЕрдм рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо "percona" рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд▓рдЧ рдЗрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

[percona@ip-192-168-1-111 ~]$ whoami
percona
[percona@ip-192-168-1-111 ~]$ mysql -upercona
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 19
Server version: 8.0.16-7 Percona Server (GPL), Release 7, Revision 613e312

Copyright (c) 2009-2019 Percona LLC and/or its affiliates
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

mysql> select user, host, plugin, authentication_string from mysql.user where user ='percona';
+---------+-----------+-------------+-----------------------+
| user    | host   | plugin   | authentication_string |
+---------+-----------+-------------+-----------------------+
| percona | localhost | auth_socket |                       |
+---------+-----------+-------------+-----------------------+
1 row in set (0.00 sec)

рд░ рдпреЛ рдлреЗрд░рд┐ рдХрд╛рдо рдЧрд░реНрдпреЛ!

рдкреНрд░рд╢реНрди: рдХреЗ рдПрдЙрдЯреИ рдкрд░реНрдХреЛрдирд╛ рд▓рдЧрдЗрди рдЕрдиреНрддрд░реНрдЧрдд рдкреНрд░рдгрд╛рд▓реАрдорд╛ рд▓рдЧ рдЗрди рдЧрд░реНрди рд╕рдореНрднрд╡ рд╣реБрдиреЗрдЫ, рддрд░ рдлрд░рдХ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рдХреЛ рд░реВрдкрдорд╛?

[percona@ip-192-168-1-111 ~]$ logout
[root@ip-192-168-1-111 ~]# mysql -upercona
ERROR 1698 (28000): Access denied for user 'percona'@'localhost'

рд╣реЛрдЗрди, рдпрд╕рд▓реЗ рдХрд╛рдо рдЧрд░реНрджреИрдиред

рдирд┐рд╖реНрдХрд░реНрд╖рдорд╛

MySQL рдзреЗрд░реИ рдкрдХреНрд╖рд╣рд░реВрдорд╛ рдзреЗрд░реИ рд▓рдЪрд┐рд▓реЛ рдЫ, рдЬрд╕рдордзреНрдпреЗ рдПрдХ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╡рд┐рдзрд┐ рд╣реЛред рддрдкрд╛рдИрд▓реЗ рдпреЛ рдкреЛрд╕реНрдЯрдмрд╛рдЯ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдУрдПрд╕ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрдорд╛ рдЖрдзрд╛рд░рд┐рдд, рдкрд╛рд╕рд╡рд░реНрдб рдмрд┐рдирд╛ рдкрд╣реБрдБрдЪ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдпреЛ рдирд┐рд╢реНрдЪрд┐рдд рдкрд░рд┐рджреГрд╢реНрдпрд╣рд░реВрдорд╛ рдЙрдкрдпреЛрдЧреА рд╣реБрди рд╕рдХреНрдЫ, рд░ рддреА рдордзреНрдпреЗ рдПрдХ рд╣реЛ рдЬрдм RDS/Aurora рдмрд╛рдЯ рдирд┐рдпрдорд┐рдд MySQL рдорд╛ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдЧрд░реНрджрд╛ IAM рдбрд╛рдЯрд╛рдмреЗрд╕ рдкреНрд░рдорд╛рдгреАрдХрд░рдгрдЕрдЭреИ рдкрдирд┐ рдкрд╣реБрдБрдЪ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди, рддрд░ рдкрд╛рд╕рд╡рд░реНрдб рдмрд┐рдирд╛ред

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди