sql >> Base de Datos >  >> RDS >> Mysql

MySQL:la propiedad del directorio mysql cambia a 'mysql' desde 'service_account' al reiniciar el servidor Linux

Estoy escribiendo esta respuesta porque creo que ambos hemos entendido mal la Administración de cuentas de usuario mecanismos de mariadb. También encontré el mismo problema que tu , así que estoy escribiendo esta respuesta para mí un poco. Puedes seguir esta respuesta o danblack 's, lo que realmente necesites. Como dijo danblack, puede que no sea una buena idea cambiar "mysql" a su service_account.

Inicialice el directorio de la base de datos mariadb con la cuenta de usuario 'mysql':

$ sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
...
Two all-privilege accounts were created.
One is [email protected], it has no password, but you need to
be system 'root' user to connect. Use, for example, sudo mysql
The second is [email protected], it has no password either, but
you need to be the system 'mysql' user to connect.
After connecting you can set the password, if you would need to be
able to connect as any of these users with a password and without sudo
...

Como puede ver, dos cuentas de todos los privilegios de mariadb, [email protected] y [email protected] , fueron creados. Y debe ser sistema operativo root y mysql usuario para usar estas dos cuentas mariadb, respectivamente.

Después de eso, habilite e inicie el servidor mariadb:

$ sudo systemctl enable --now mariadb.service

Es posible que desee utilizar mysql_secure_installation comando para mejorar la seguridad inicial .

Luego use mariadb [email protected] cuenta con el sistema root cuenta para conectarse al servidor, y cree una nueva cuenta de mariadb que tenga root -como privilegios con el nombre que quieras:

$ sudo mysql -u root -p  # first input your passwd to use 'sudo', then [ENTER] for empty mariadb root account passwd
[sudo] password for your_service_account:
Enter password:
...
MariaDB [(none)]> CREATE USER 'whatever_name_you_want'@'localhost' IDENTIFIED BY 'somepasswd';
Query OK, 0 rows affected (0.004 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* to 'whatever_name_you_want'@'localhost';
Query OK, 0 rows affected (0.004 sec)

MariaDB [(none)]> quit
Bye

Usar [email protected] cuenta para conectarse al servidor y crear una nueva base de datos:

$ mysql -u whatever_name_you_want -p
Enter password:
...
MariaDB [(none)]> CREATE DATABASE IF NOT EXISTS mydb;
Query OK, 1 row affected (0.001 sec)

MariaDB [(none)]> quit
Bye

Y si establece una contraseña para [email protected] cuenta, incluso puede usar esta cuenta sin sudo :

$ sudo mysql -u root -p
[sudo] password for your_service_account:
Enter password:
...
MariaDB [(none)]> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('somepasswd');
Query OK, 0 rows affected (0.041 sec)

MariaDB [(none)]> quit
Bye
$ mysql -u root -p
Enter password:
...
MariaDB [(none)]> quit
Bye