Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL:Der Besitz des mysql-Verzeichnisses ändert sich beim Neustart des Linux-Servers von „service_account“ zu „mysql“.

Ich schreibe diese Antwort, weil ich denke, dass wir beide die Benutzerkontenverwaltung Mechanismen von Mariadb. Ich bin auch auf gestoßen gleiches Problem wie du , also schreibe ich diese Antwort etwas für mich. Sie können dieser Antwort folgen oder danblack 's, je nachdem, was Sie wirklich brauchen. Wie danblack sagte, ist es möglicherweise keine gute Idee, "mysql" in Ihr service_account zu ändern.

Initialisieren Sie das Mariadb-Datenbankverzeichnis mit dem Benutzerkonto „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
...

Wie Sie sehen können, zwei Mariadb All-Privilege-Konten, [email protected] und [email protected] , wurden erstellt. Und Sie müssen Betriebssystem-root sein und mysql Benutzer, diese beiden Mariadb-Konten zu verwenden.

Aktivieren und starten Sie danach den Mariadb-Server :

$ sudo systemctl enable --now mariadb.service

Sie können mysql_secure_installation verwenden Befehl, um die Anfangssicherheit zu verbessern .

Verwenden Sie dann mariadb [email protected] Konto mit System root Konto, um sich mit dem Server zu verbinden, und erstellen Sie ein neues mariadb-Konto mit root -ähnliche Privilegien mit beliebigem Namen:

$ 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

Verwenden Sie das neue unprivilegierte [email protected] Konto, um sich mit dem Server zu verbinden und eine neue Datenbank zu erstellen:

$ 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

Und wenn Sie ein Passwort für [email protected] Konto, Sie können dieses Konto sogar ohne sudo :

verwenden
$ 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