Quomodo uti MySQL Sine Password (and Securitatis Risks)

Quomodo uti MySQL Sine Password (and Securitatis Risks)

Dicunt optimam tesseram esse quem non meminisse. In MySQL casu fieri potest propter plugin auth_socket et ejus versioni ad MariaDB - unix_socket.

Utraque haec plugina omnino non sunt nova: multa de illis in hoc eodem diario dicta sunt, v.gr. quomodo mutare passwords in MySQL 5.7 utens auth_socket plugin. Tamen, dum quid novi in ​​MariaDB 10.4 inspicias, unix_socket defaltam nunc inauguratus deprehendi et unum e rationibus authenticationis ("unum", quia in MariaDB 10.4 plus quam unum plugin uni usori ad authenticas praesto est, quod explicatur in documento " Authenticatio " de MariaDB 10.04 .).

Ut dixi, hoc nuntium non est, et cum MySQL insertis fasciculis .deb utens quadrigis Debianis suffultae, usor radicis creatus est ad nervum authenticas. Hoc verum est de utroque MySQL et 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>>

Cum fasciculis Debian pro MySQL, radix usoris signo authenticitatis munito hoc modo:

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)

Simile est cum sarcina pro MariaDB;

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)

Fasciculi .deb ex Repositorio officiali Percona etiam configurare radicem usoris authenticas sub auth-nervorum et pro Percona Servo. Exemplum demus cum Percona Servo pro MySQL 8.0.16-7 et Decuria 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)

Magica igitur quid est? Pluginum coercet quod Linux usor MySQL user utens cum SO_PEERCRED nervum optionis notitias colligendi de programmate clientis utentis currit. Sic plugin solum adhiberi potest in systematibus quae optionem SO_PEERCRED sustinent, sicut Linux. SO_PEERCRED optio nervus te permittit ut cognoscas uid processum nervum adiunctum. Et tunc iam accipit nomen usoris cum hoc uid.

Hic est exemplum cum usore "vagantem":

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

Cum user "vagus" in MySQL nullus est, aditus negatur. Ut user creare faciamus et iterum conare:

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)

Accidit!

Quid vero de distributione non-Debiana ubi hoc per defaltam non providetur? Experiamur Percona Servo pro MySQL 8 installed in CentOS 7:

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

Bummer. Quid defuit? Plugin non oneratus:

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

Addamus plugin ad processum:

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)

Nunc omnia nobis necessaria sunt. Conemur iterum:

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)

Nunc inire potes in usuario "percona" utendo.

[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)

Et iterum laboraverunt!

Quaeritur: Nunquid poteritne aperiri systema sub eadem percona login, sed ut user diversum?

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

Imo non laborabit.

conclusio,

MySQL admodum flexibile est in pluribus aspectibus, quarum una est methodus authenticas. Ut videre potes ex hac epistula, accessus sine Tesserae acquiri potest, in OS utentibus. Hoc in quibusdam missionibus utile esse potest, et una earum est cum migrans ex RDS/Aurora ad MySQL regulariter utens. IAM database authenticasad accessum adhuc, sed sine passwords.

Source: www.habr.com