sql >> データベース >  >> RDS >> Mysql

MySQL:Linuxサーバーの再起動時にmysqlディレクトリの所有権が「service_account」から「mysql」に変更されます

    この回答を書いているのは、私たち2人がユーザーアカウント管理<を誤解していると思うからです。 / a> mariadbのメカニズム。 にも遭遇しましたあなたと同じ問題 、だから私は自分自身のためにこの答えを書いています。この回答に従うか、danblack をフォローできます 、実際に必要な方。 danblackが言ったように、「mysql」をservice_accountに変更するのは良い考えではないかもしれません。

    'mysql'ユーザーアカウントでmariadbデータベースディレクトリを初期化します:

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

    ご覧のとおり、2つのmariadb all-privilegeアカウント、[email protected] および[email protected] 、 作成されました。また、オペレーティングシステムのrootである必要があります およびmysql ユーザーは、これら2つのmariadbアカウントをそれぞれ使用します。

    その後、mariadbサーバーを有効にして起動します:

    $ sudo systemctl enable --now mariadb.service
    

    mysql_secure_installationを使用することをお勧めします 初期セキュリティを改善する コマンド 。

    次に、mariadb [email protected] システムrootのアカウント サーバーに接続するためのアカウント、およびルートを持つ新しいmariadbアカウントを作成します-特権のような 好きな名前で:

    $ 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
    

    新しい非特権の[email protected] サーバーに接続して新しいデータベースを作成するためのアカウント:

    $ 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
    

    また、[email protected] アカウント、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. mysql_fetch_arrayは1行のみを返します

    2. MySQL:時間の比較

    3. MySQLで行数が異なる2つのテーブルを結合するにはどうすればよいですか?

    4. リモートMysqlアクセス