рдкрд╛рд╕рд╡рд░реНрдбрд╢рд┐рд╡рд╛рдп MySQL рдХрд╕реЗ рд╡рд╛рдкрд░рд╛рд╡реЗ (рдЖрдгрд┐ рд╕реБрд░рдХреНрд╖рд╛ рдзреЛрдХреЗ)

рдкрд╛рд╕рд╡рд░реНрдбрд╢рд┐рд╡рд╛рдп MySQL рдХрд╕реЗ рд╡рд╛рдкрд░рд╛рд╡реЗ (рдЖрдгрд┐ рд╕реБрд░рдХреНрд╖рд╛ рдзреЛрдХреЗ)

рддреЗ рдореНрд╣рдгрддрд╛рдд рдХреА рд╕рд░реНрд╡реЛрддреНрддрдо рдкрд╛рд╕рд╡рд░реНрдб рд╣рд╛ рдЖрд╣реЗ рдЬреЛ рддреБрдореНрд╣рд╛рд▓рд╛ рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рдгреНрдпрд╛рдЪреА рдЧрд░рдЬ рдирд╛рд╣реА. MySQL рдЪреНрдпрд╛ рдмрд╛рдмрддреАрдд рдкреНрд▓рдЧрдЗрдирдореБрд│реЗ рд╣реЗ рд╢рдХреНрдп рдЖрд╣реЗ auth_socket рдЖрдгрд┐ MariaDB рд╕рд╛рдареА рддреНрдпрд╛рдЪреА рдЖрд╡реГрддреНрддреА - рдпреБрдирд┐рдХреНрд╕_рд╕рдХреЗрдЯ.

рд╣реЗ рджреЛрдиреНрд╣реА рдкреНрд▓рдЧрдЗрди рдЕрдЬрд┐рдмрд╛рдд рдирд╡реАрди рдирд╛рд╣реАрдд; рддреНрдпрд╛рдВрдЪреНрдпрд╛рдмрджреНрджрд▓ рдпрд╛рдЪ рдмреНрд▓реЙрдЧрдордзреНрдпреЗ рдмрд░реЗрдЪ рдХрд╛рд╣реА рд╕рд╛рдВрдЧрд┐рддрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде рдпрд╛рд╡рд┐рд╖рдпреАрдЪреНрдпрд╛ рд▓реЗрдЦрд╛рдд Auth_socket рдкреНрд▓рдЧрдЗрди рд╡рд╛рдкрд░реВрди MySQL 5.7 рдордзреНрдпреЗ рдкрд╛рд╕рд╡рд░реНрдб рдХрд╕реЗ рдмрджрд▓рд╛рд╡реЗ. рддрдерд╛рдкрд┐, MariaDB 10.4 рдордзреНрдпреЗ рдирд╡реАрди рдХрд╛рдп рдЖрд╣реЗ рддреЗ рдкрд╣рд╛рдд рдЕрд╕рддрд╛рдирд╛, рдорд▓рд╛ рдЖрдврд│рд▓реЗ рдХреА рдпреБрдирд┐рдХреНрд╕_рд╕реЙрдХреЗрдЯ рдЖрддрд╛ рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░ рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗ рдЖрдгрд┐ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкрджреНрдзрддреАрдВрдкреИрдХреА рдПрдХ рдЖрд╣реЗ (тАЬрдкреИрдХреА рдПрдХтАЭ, рдХрд╛рд░рдг рдорд╛рд░рд┐рдпрд╛рдбреАрдмреА 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)

MariaDB рд╕рд╛рдареА .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)

рдЕрдзрд┐рдХреГрдд рдкрд░реНрдХреЛрдирд╛ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреАрд▓ .deb рдкреЕрдХреЗрдЬреЗрд╕ рджреЗрдЦреАрд▓ рдСрде-рд╕реЙрдХреЗрдЯ рдЕрдВрддрд░реНрдЧрдд рдЖрдгрд┐ рдкрд░реНрдХреЛрдирд╛ рд╕рд░реНрд╡реНрд╣рд░рд╕рд╛рдареА рд░реВрдЯ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рддрд╛рдд. рд╕рд╣ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдК MySQL 8.0.16-7 рд╕рд╛рдареА Percona рд╕рд░реНрд╡реНрд╣рд░ рдЖрдгрд┐ рдЙрдмрдВрдЯреВ 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 рдкрд░реНрдпрд╛рдпрд╛рд▓рд╛ рд╕рдкреЛрд░реНрдЯ рдХрд░рдгрд╛рд░реНтАНрдпрд╛ рд╕рд┐рд╕реНрдЯреАрдорд╡рд░рдЪ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ. 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 рдЕрдиреЗрдХ рдкреИрд▓реВрдВрдордзреНрдпреЗ рд▓рд╡рдЪрд┐рдХ рдЖрд╣реЗ, рддреНрдпрд╛рдкреИрдХреА рдПрдХ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкрджреНрдзрдд рдЖрд╣реЗ. рддреБрдореНрд╣реА рдпрд╛ рдкреЛрд╕реНрдЯрд╡рд░реВрди рдкрд╛рд╣реВ рд╢рдХрддрд╛ рдХреА, OS рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрд╡рд░ рдЖрдзрд╛рд░рд┐рдд, рдкрд╛рд╕рд╡рд░реНрдбрд╢рд┐рд╡рд╛рдп рдкреНрд░рд╡реЗрд╢ рдорд┐рд│реВ рд╢рдХрддреЛ. рд╣реЗ рдХрд╛рд╣реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рд┐рд╕реНрдерд┐рддреАрдВрдордзреНрдпреЗ рдЙрдкрдпреБрдХреНрдд рдард░реВ рд╢рдХрддреЗ, рдЖрдгрд┐ рддреНрдпрд╛рдкреИрдХреА рдПрдХ рдореНрд╣рдгрдЬреЗ RDS/Aurora рдордзреВрди рдирд┐рдпрдорд┐рдд MySQL рд╡рд░ рд╕реНрдерд▓рд╛рдВрддрд░ рдХрд░рддрд╛рдирд╛ IAM рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рдорд╛рдгреАрдХрд░рдгрддрд░реАрд╣реА рдкреНрд░рд╡реЗрд╢ рдорд┐рд│рд╡рдгреНрдпрд╛рд╕рд╛рдареА, рдкрд░рдВрддреБ рд╕рдВрдХреЗрддрд╢рдмреНрджрд╛рдВрд╢рд┐рд╡рд╛рдп.

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛