sql >> Databasteknik >  >> RDS >> Mysql

MySQL:Äganderätten till mysql-katalogen ändras till 'mysql' från 'service_account' vid omstart av Linux-servern

Jag skriver det här svaret eftersom jag tror att vi båda har missförstått hantering av användarkonton mekanismer för mariadb. Jag har också stött på samma problem som du , så jag skriver det här svaret för mig själv något. Du kan följa det här svaret eller danblack 's, vad du än behöver. Som danblack sa, det kanske inte är en bra idé att ändra "mysql" till ditt service_account.

Initiera mariadb databaskatalog med 'mysql' användarkonto:

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

Som du kan se, två mariadb konton med alla rättigheter, [email protected] och [email protected] , skapades. Och du måste vara operativsystem root och mysql användaren att använda dessa två mariadb-konton, respektive.

Efter det, aktivera och starta mariadb server :

$ sudo systemctl enable --now mariadb.service

Du kanske vill använda mysql_secure_installation kommando för att förbättra den initiala säkerheten .

Använd sedan mariadb [email protected] konto med system root konto för att ansluta till server och skapa ett nytt mariadb-konto som har root -liknande privilegier med vilket namn du vill:

$ 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

Använd ny oprivilegierad [email protected] konto för att ansluta till servern och skapa en ny databas :

$ 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

Och om du ställer in lösenord för [email protected] konto, du kan till och med använda det här kontot utan 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



  1. JSON-funktioner är nu aktiverade som standard i SQLite

  2. MySQL i docker-compose -- åtkomst nekad

  3. MySQL där kolumn ='x, y, z'

  4. Referensvärde för seriell kolumn i en annan kolumn under samma INSERT