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

Ubuntu20.04LTSにMySQL8をインストールする方法

    MySQLは、WebサイトおよびWebアプリケーションのデータストレージとして使用される一般的なリレーショナルデータベースシステムの1つです。このチュートリアルでは、MySQL8をUbuntu20.04LTSにインストールするために必要なすべての手順を説明します。手順は、UbuntuおよびLinuxシステムの他のバージョンでも同じである必要があります。また、Ubuntu18.04LTSにMySQL8をインストールする方法に従うこともできます。また、WindowsにMySQL 8をインストールする方法や、MySQLを使用して基本的なSQLクエリを学習する方法など、他のMySQL固有のチュートリアルにも興味があるかもしれません。

    前提条件

    このチュートリアルは、ローカルまたは本番環境で使用するために、Ubuntu20.04LTSデスクトップまたはサーバーバージョンがすでにインストールされていることを前提としています。 「Ubuntu20.04LTSデスクトップのインストール」、「VMwareを使用したWindowsへのUbuntu 20.04 LTSのインストール」、「AmazonEC2へのUbuntu20.04LTSサーバーのスピンアップ」に従ってUbuntu20.04LTSをインストールできます。また、root権限またはsudo権限を持つ通常のユーザーのいずれかを持っていることを前提としています。

    MySQLのインストール

    このセクションでは、MySQLDatabaseServerバージョン8をUbuntu20.04LTSにインストールするために必要なコマンドを提供します。

    # Install MySQL Server 8
    sudo apt install mysql-server

    # Output
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    The following additional packages will be installed:
    libaio1 libcgi-fast-perl libcgi-pm-perl libevent-core-2.1-7 libfcgi-perl libhtml-template-perl libmecab2 mecab-ipadic
    mecab-ipadic-utf8 mecab-utils mysql-client-8.0 mysql-client-core-8.0 mysql-server-8.0 mysql-server-core-8.0
    ---
    ---
    Setting up mysql-server-8.0 (8.0.20-0ubuntu0.20.04.1) ...
    update-alternatives: using /etc/mysql/mysql.cnf to provide /etc/mysql/my.cnf (my.cnf) in auto mode
    Renaming removed key_buffer and myisam-recover options (if present)
    mysqld will log errors to /var/log/mysql/error.log
    mysqld is running as pid 63195
    Created symlink /etc/systemd/system/multi-user.target.wants/mysql.service → /lib/systemd/system/mysql.service.
    Setting up mysql-server (8.0.20-0ubuntu0.20.04.1) ...
    Processing triggers for systemd (245.4-4ubuntu3) ...
    Processing triggers for man-db (2.9.1-1) ...
    Processing triggers for libc-bin (2.31-0ubuntu9) ...

    インストールコマンドの実行後にインストールされるMySQLパッケージを強調表示しました。 MySQLコア、サーバー、およびクライアントパッケージをインストールします。また、このチュートリアルの作成中にMySQLサーバーバージョン8.0.20がインストールされました。

    MySQLインストールの構成と保護

    また、コマンド mysql_secure_installation を使用して、インストールを構成および保護する必要があります。 以下に示すように。ルートパスワードといくつかのセキュリティ保護用の質問を設定するように求められます。

    ステップ1 -安全なインストール -コマンドを実行してMySQL構成を開始します。

    # Secure MySQL
    sudo mysql_secure_installation

    ステップ2 -パスワードバリデーター -パスワードを検証するためのパスワードバリデーターの使用を確認するように求められます。また、パスワードを提供する際のパスワード強度も表示されます。

    # Password Validator Component
    Press y|Y for Yes, any other key for No: y

    [いいえ]を選択すると、MySQLルートおよび他のユーザーを追加する際のパスワード強度はチェックされません。 MySQLユーザーには強力なパスワードを使用する必要があるため、PasswordValidatorコンポーネントを使用することをお勧めします。

    ステップ3 -パスワード検証レベル -セキュアインストールコマンドは、パスワード検証レベルを要求し、Low(0)、Medium(1)、およびStrong(2)から選択するオプションを提供します。少なくとも中レベルを使用することをお勧めします すべてのMySQLユーザーの強力なパスワードを設定します。すべてのレベルの検証ルールは次のとおりです。

    -文字数に制限がなく、8文字以上のパスワードが必要です。

    -中レベルでは、8文字以上で、数字、大文字、小文字、および特殊文字を使用できるパスワードが必要です。

    強い -ストロングレベルでは、8文字以上で、数字、大文字、小文字、および特殊文字を使用できるパスワードが必要です。辞書ファイルも許可されます。

    # Password Validation Level
    Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1

    ステップ4 -ルートパスワード -MySQLがrootユーザーに使用するデフォルトの認証プラグインはauth_socket

    # Password Prompt
    New password:<password>
    Re-enter new password:<repeat password>

    Password Validatorを使用することを選択した場合は、rootパスワードのパスワード強度も表示され、以下に示すように、指定されたパスワードを使用することを確認します。

    # Confirm Password
    Estimated strength of the password: 80
    Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y

    [いいえ]を選択すると、パスワードの入力を再度求められます。

    ステップ5 -匿名ユーザーを削除 -パスワードを入力した後、セキュアインストールプロセスは匿名ユーザーを削除するように要求します。 MySQLは、テスト目的でインストール中に匿名ユーザーを追加し、誰でもパスワードなしでログインできるようにします。匿名ユーザーを削除することをお勧めします。

    Remove anonymous users? (Press y|Y for Yes, any other key for No) : y

    ステップ6 -リモートログインを禁止する -セキュアインストールプロセスでは、rootユーザーにリモートログインが許可されているかどうかの確認も求められます。 rootユーザーをローカルホストに制限するには、オプションyを選択する必要があります。必要に応じて、いつでもユーザーを追加してリモートログインを許可できます。

    Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y

    ステップ7 -テストデータベースの削除 -MySQLは、インストール中にテストデータベースを作成します。分析のためにテストデータベースを保持し、後でドロップすることができます。

    Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y

    ステップ8 -特権テーブルの再読み込み -最後に、セキュアインストールでは、変更をすぐに適用するために特権テーブルを再ロードするように求められます。

    Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y

    MySQLの新規インストールで私が従った完全な手順は次のとおりです。

    # Secure MySQL
    sudo mysql_secure_installation

    # Configuration
    Securing the MySQL server deployment.

    Connecting to MySQL using a blank password.

    VALIDATE PASSWORD COMPONENT can be used to test passwords
    and improve security. It checks the strength of password
    and allows the users to set only those passwords which are
    secure enough. Would you like to setup VALIDATE PASSWORD component?

    Press y|Y for Yes, any other key for No: y

    There are three levels of password validation policy:

    LOW Length >= 8
    MEDIUM Length >= 8, numeric, mixed case, and special characters
    STRONG Length >= 8, numeric, mixed case, special characters and dictionary file

    Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1
    Please set the password for root here.

    New password:

    Re-enter new password:

    Estimated strength of the password: 50
    Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
    By default, a MySQL installation has an anonymous user,
    allowing anyone to log into MySQL without having to have
    a user account created for them. This is intended only for
    testing, and to make the installation go a bit smoother.
    You should remove them before moving into a production
    environment.

    Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
    Success.


    Normally, root should only be allowed to connect from
    'localhost'. This ensures that someone cannot guess at
    the root password from the network.

    Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
    Success.

    By default, MySQL comes with a database named 'test' that
    anyone can access. This is also intended only for testing,
    and should be removed before moving into a production
    environment.


    Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
    - Dropping test database...
    Success.

    - Removing privileges on test database...
    Success.

    Reloading the privilege tables will ensure that all changes
    made so far will take effect immediately.

    Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
    Success.

    All done!

    上記の手順により、テストデータベースと匿名ユーザーが削除されます。また、リモートログインを禁止して、 127.0.0.1を使用してサーバーにローカルでアクセスできるようにします。 またはlocalhost

    インストールの確認

    以下に示すコマンドを使用してMySQLサーバーのインストールを確認し、MySQLサーバーが実行されているかどうかを確認できます。

    # Check MySQL Status
    systemctl status mysql

    # Output mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2020-06-05 19:42:35 IST; 9min ago Main PID: 63433 (mysqld) Status: "Server is operational" Tasks: 40 (limit: 4624) Memory: 319.2M CGroup: /system.slice/mysql.service └─63433 /usr/sbin/mysqld Jun 05 19:42:35 bravo systemd[1]: Starting MySQL Community Server... Jun 05 19:42:35 bravo systemd[1]: Started MySQL Community Server.

    また、当社がインストールしたサーバーのバージョンを確認し、当社が構成したルートパスワードを使用してサーバーにアクセスできることを確認してください。

    # Check version
    sudo mysql --version

    # Output
    mysql Ver 8.0.20-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))

    # Login
    sudo mysql
    # OR
    sudo mysql -u root

    # Quit Database
    exit

    上記のようにMySQLにログインするだけで、MySQLサーバーを保護しながらrootユーザーのパスワードを指定できます。 MySQLはauth_socketを使用するため、rootユーザーを直接許可します パスワードを必要としないrootユーザー用のプラグイン。

    rootユーザーパスワードプラグイン

    パスワードプラグインを変更できます rootユーザーのcaching_sha2_password(推奨) またはmysql_native_password phpMyAdminを含む他のアプリケーションがrootユーザーを使用してMySQLサーバーにログインできるようにします。以下に示すコマンドを使用して実行できます。

    # Login to MySQL
    sudo mysql

    # Check password scheme of root user
    SELECT user,authentication_string,plugin,host FROM mysql.user;

    # Note the password plugin of root user
    +------------------+------------------------------------------------------------------------+-----------------------+-----------+
    | user | authentication_string | plugin | host |
    +------------------+------------------------------------------------------------------------+-----------------------+-----------+
    | debian-sys-maint | $A$005$[DA
    NP9|K1zAmHe`LVwrhII7zBo5b5xUoPnvOLuCa9CSJVqCn7W1rzOCCyZD | caching_sha2_password | localhost |
    | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
    | mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
    | mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
    | root | | auth_socket | localhost |
    +------------------+------------------------------------------------------------------------+-----------------------+-----------+

    # Change to new and recommended password plugin - caching_sha2_password
    ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '<pw>';

    # Apply changes
    flush privileges;

    # Check password scheme of root user
    SELECT user,authentication_string,plugin,host FROM mysql.user;

    # Note the password plugin of root user
    +------------------+-------------------------------------------+-----------------------+-----------+
    | user | authentication_string | plugin | host |
    +------------------+-------------------------------------------+-----------------------+-----------+
    | root | $A$005$ZtYD-ppbn>iO�"MHhl/0TXh9Qo3xYdWK3ThKPmDB6r.QhVlZY1dcT1LWH0A | caching_sha2_password | localhost |
    +------------------+-------------------------------------------+-----------------------+-----------+

    # Change password plugin of root user to mysql_native_password - not recommended
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<pw>';

    # Apply changes
    flush privileges;

    # Check password scheme of root user
    SELECT user,authentication_string,plugin,host FROM mysql.user;

    # Note the password plugin of root user
    +------------------+-------------------------------------------+-----------------------+-----------+
    | user | authentication_string | plugin | host |
    +------------------+-------------------------------------------+-----------------------+-----------+
    | root | *E5C4F73D963032BEF9BB4CA799A848C08BADC343 | mysql_native_password | localhost |
    +------------------+-------------------------------------------+-----------------------+-----------+

    # Quit Database
    exit

    追加ユーザー

    以下に示すように、CREATEUSERコマンドを使用してユーザーを追加できます。

    # Login to MySQL - auth_socket
    sudo mysql

    # OR - Login to MySQL - caching_sha2_password
    sudo mysql -u root -p

    # Add User
    CREATE USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '<pw>';

    # Apply changes
    flush privileges;

    # Quit Database
    exit

    MySQLを使用した基本的なSQLクエリの学習に従って、基本的なSQLクエリを学習することもできます。

    重要なコマンド

    このセクションでは、サーバーを起動、停止、および再起動するための重要なコマンドのいくつかを示します。

    # Check server status
    sudo service mysql status

    # Stop server
    sudo service mysql stop

    # Start server
    sudo service mysql start

    # Restart server
    sudo service mysql restart
     

    概要

    このチュートリアルでは、最新バージョンのMySQLサーバー(Ubuntu 20.04LTSにMySQL8)をインストールするために必要なすべての手順を説明しました。また、MySQLサーバーのインストールをさらに保護するための構成手順も提供しました。

    インストールが完了したら、MySQLを使用した基本的なSQLクエリの学習、MySQLでのブログ管理用のデータベース設計ガイド、およびMySQLでのオンラインショッピングカート用のデータベース設計ガイドに従うこともできます。


    1. PostgreSQLテーブルからINSERTSQLスクリプトとして特定の行をエクスポートします

    2. MySQLチュートリアル– MySQLサーバーログの管理:回転、圧縮、保持、削除

    3. MySQLは外部キー制約を追加できません

    4. SQL Serverで、特定のテーブルに対してCREATE TABLEステートメントを生成するにはどうすればよいですか?