sql >> Database teknologi >  >> RDS >> Mysql

MySQL:Ejerskabet af mysql-biblioteket ændres til 'mysql' fra 'service_account' ved genstart af linux-serveren

Jeg skriver dette svar, fordi jeg tror, ​​vi begge har misforstået brugerkontostyring mekanismer af mariadb. Jeg har også stødt på samme problem som dig , så jeg skriver dette svar lidt for mig selv. Du kan følge dette svar eller danblack 's, hvad end du rent faktisk har brug for. Som danblack sagde, er det måske ikke en god idé at ændre "mysql" til din service_account.

Initialiser mariadb database bibliotek med 'mysql' brugerkonto:

$ 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, er der to mariadb-konti med alle privilegier, [email protected] og [email protected] , blev oprettet. Og du skal være operativsystem root og mysql bruger til at bruge henholdsvis disse to mariadb-konti.

Derefter skal du aktivere og starte mariadb-serveren :

$ sudo systemctl enable --now mariadb.service

Du vil måske bruge mysql_secure_installation kommando for at forbedre den indledende sikkerhed .

Brug derefter mariadb [email protected] konto med system root konto for at oprette forbindelse til server, og opret ny mariadb-konto, der har root -lignende privilegier med hvilket navn du ønsker:

$ 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

Brug ny uprivilegeret [email protected] konto for at oprette forbindelse til serveren og oprette en ny database :

$ 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

Og hvis du indstiller adgangskoden til [email protected] konto, kan du endda bruge denne konto uden 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. Hvordan kan jeg lave et gennemsnit af datoer i MySQL?

  2. Brug af PHP SESSION-variabler til at gemme MySQL-forespørgselsresultater

  3. SQL Server dynamisk PIVOT-forespørgsel?

  4. Min DBA er syg - Database Failover Tips til SysAdmins