GNU/Linux >> Linux の 問題 >  >> Linux

UbuntuオペレーティングシステムにMySQLサーバーをインストールします

MySQLは、無料で広く使用されているオープンソースのリレーショナルデータベースです。データベースが必要であることはわかっているが、利用可能なすべてのオプションについてあまり知らない場合に適しています。

この記事では、UbuntuオペレーティングシステムへのMySQLデータベースサーバーの基本的なインストールについて説明します。 PHPの拡張機能など、アプリケーションがMySQLを使用できるようにするには、他のパッケージをインストールする必要がある場合があります。詳細については、アプリケーションのドキュメントを確認してください。

MySQLをインストール

Ubuntuオペレーティングシステムのパッケージマネージャーを使用してMySQLサーバーをインストールします。

sudo apt-get update
sudo apt-get install mysql-server

インストーラーはMySQLとすべての依存関係をインストールします。

インストールの完了後にセキュアインストールユーティリティが自動的に起動しない場合は、次のコマンドを入力します。

sudo mysql_secure_installation utility

このユーティリティは、mysqlのrootパスワードと、rootユーザーへのリモートアクセスの削除やrootパスワードの設定など、その他のセキュリティ関連のオプションを定義するように求めるプロンプトを表示します。

リモートアクセスを許可する

iptablesを有効にしていて、別のマシンからMySQLデータベースに接続する場合は、サーバーのファイアウォールでポートを開く必要があります(デフォルトのポートは3306です)。 MySQLを使用するアプリケーションが同じサーバーで実行されている場合は、これを行う必要はありません。

次のコマンドを実行して、mysqlサーバーへのリモートアクセスを許可します。

sudo ufw enable
sudo ufw allow mysql

MySQLサービスを開始します

インストールが完了したら、次のコマンドを実行してデータベースサービスを開始できます。サービスがすでに開始されている場合は、サービスがすでに実行されていることを通知するメッセージが表示されます。

sudo systemctl start mysql
再起動時に起動

再起動後にデータベースサーバーが確実に起動するようにするには、次のコマンドを実行します。

sudo systemctl enable mysql
インターフェースの構成

MySQLは、デフォルトでは、リモートでアクセス可能なインターフェイスにバインド(リッスン)されなくなりました。/etc/mysql/mysql.conf.d/mysqld.cnfの「bind-address」ディレクティブを編集します。

bind-address		= 127.0.0.1 ( The default. )
bind-address		= XXX.XXX.XXX.XXX ( The ip address of your Public Net interface. )
bind-address		= ZZZ.ZZZ.ZZZ.ZZZ ( The ip address of your Service Net interface. )
bind-address		= 0.0.0.0 ( All ip addresses. )

mysqlサービスを再起動します。

sudo systemctl restart mysql

mysqlシェルを開始します

MySQLサーバーを操作する方法は複数ありますが、この記事では、最も基本的で互換性のあるアプローチであるmysqlに焦点を当てています。 シェル。

  1. コマンドプロンプトで、次のコマンドを実行してmysqlを起動します シェルを作成し、rootユーザーとして入力します:

    /usr/bin/mysql -u root -p
    
  2. パスワードの入力を求められたら、インストール時に設定したパスワードを入力します。パスワードを設定していない場合は、 Enterを押します。 パスワードなしを送信します。

    次のmysql シェルプロンプトが表示されます:

    mysql>
    
ルートパスワードを設定する

空白のパスワードを入力してログインした場合、または設定したrootpasswordを変更する場合は、パスワードを作成または変更できます。

  1. MySQL 5.7より前のバージョンの場合、mysqlに次のコマンドを入力します シェル、passwordを置き換えます 新しいパスワードで:

    UPDATE mysql.user SET Password = PASSWORD('password') WHERE User = 'root';
    

    バージョンMySQL5.7以降の場合、mysqlに次のコマンドを入力します シェル、passwordを置き換えます 新しいパスワードで:

    UPDATE mysql.user SET authentication_string = PASSWORD('password') WHERE User = 'root';
    
  2. 変更を有効にするには、次のコマンドを使用して、保存されているユーザー情報を再読み込みします。

    FLUSH PRIVILEGES;
    

    :SQLコマンドにはすべて大文字を使用しています。これらのコマンドを小文字で入力すると、機能します。慣例により、コマンドはすべて大文字で記述され、操作されているフィールド名やその他のデータから目立つようになっています。

後でrootパスワードをリセットする必要がある場合は、MySQLrootパスワードのリセットを参照してください。

ユーザーを表示

MySQLはユーザー情報を独自のデータベースに保存します。データベースの名前はmysql 。そのデータベース内のユーザー情報は、 userという名前のテーブルadatasetにあります。 。 MySQLuserテーブルで設定されているユーザーを確認するには、次のコマンドを実行します。

SELECT User, Host, authentication_string FROM mysql.user;

次のリストは、そのコマンドの部分を説明しています。

  • 選択 データを要求していることをMySQLに通知します。
  • ユーザーホスト authentication_string MySQLに検索するフィールドを指示します。フィールドはテーブル内のデータのカテゴリです。この場合、ユーザー名、ユーザー名に関連付けられているホスト、および暗号化されたパスワードエントリを探しています。
  • FROM mysql.user " mysqlからデータを取得するようにMySQLに指示します データベースとユーザー テーブル。
  • セミコロン(;)でコマンドを終了します。

:すべてのSQLクエリはセミコロンで終わります。 MySQLは、セミコロンを入力するまでクエリを処理しません。

ユーザーホスト

次の例は、前のクエリの出力です。

SELECT User, Host, authentication_string FROM mysql.user;
+------------------+-----------+-------------------------------------------+
| User             | Host      | authentication_string                     |
+------------------+-----------+-------------------------------------------+
| root             | localhost | *756FEC25AC0E1823C9838EE1A9A6730A20ACDA21 |
| mysql.session    | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys        | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| debian-sys-maint | localhost | *27E7CA2445405AB10C656AFD0F86AF76CCC57692 |
+------------------+-----------+-------------------------------------------+

ユーザーはホスト、具体的には接続元のホストに関連付けられています。この例のrootユーザーは、 localhostに対して定義されています。 、 localhostのIPアドレスの場合 、およびサーバーのホスト名。通常、ユーザーを設定する必要があるのは1つのホストのみで、通常はそこから接続します。

MySQLサーバーと同じコンピューターでアプリケーションを実行している場合、アプリケーションがデフォルトで接続するホストは localhostです。 。作成する新しいユーザーには、 localhostが必要です。 彼らのホストで フィールド。

アプリケーションがリモートで接続する場合は、ホスト MySQLが検索するエントリは、リモートコンピュータ(クライアントの送信元のコンピュータ)のIPアドレスまたはDNSホスト名です。

匿名ユーザー

出力例では、1つのエントリにホスト値がありますが、ユーザー名やパスワードはありません。これは匿名ユーザー 。クライアントがユーザー名を指定せずに接続すると、匿名ユーザーとして接続しようとします。

通常、匿名ユーザーは必要ありませんが、一部のMySQLインストールにはデフォルトで匿名ユーザーが含まれています。表示された場合は、ユーザーを削除するか(''‘のように引用符が空のユーザー名を参照)、パスワードを設定する必要があります。

データベースを作成する

データベースサーバーには違いがあります およびデータベース 、thoughthoseの用語でさえ、しばしば同じ意味で使用されます。 MySQLはデータベースサーバーです。つまり、データベースを追跡し、データベースへのアクセスを制御します。データベースにはデータが格納されており、アプリケーションがMySQLと対話するときにアクセスしようとしているのはデータベースです。

セットアッププロセスの一部としてデータベースを作成するアプリケーションもありますが、データベースを自分で作成してアプリケーションに通知する必要があるアプリケーションもあります。

データベースを作成するには、mysqlにログインします シェルを作成し、次のコマンドを実行して、demodbを置き換えます 作成するデータベースの名前:

CREATE DATABASE demodb;

データベースが作成されたら、クエリを実行してすべてのデータベースを一覧表示することにより、データベースの作成を確認できます。次の例は、クエリと出力例を示しています。

SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| demodb             |
| mysql              |
+--------------------+
3 rows in set (0.00 sec)
データベースユーザーを追加する

アプリケーションがrootユーザーを使用してデータベースに接続する場合、通常、アプリケーションには必要以上の特権があります。アプリケーションが新しいデータベースへの接続に使用できるユーザーを追加できます。次の例では、 demouserという名前のユーザー 作成されます。

  1. 新しいユーザーを作成するには、mysqlで次のコマンドを実行します シェル:

    INSERT INTO mysql.user (User,Host,authentication_string,ssl_cipher,x509_issuer,x509_subject)
    VALUES('demouser','localhost',PASSWORD('demopassword'),'','','');
    
  2. ユーザーに変更を加えたとき mysqlのテーブル データベースで、次のように、権限をフラッシュして変更を読み取るようにMySQLに指示します。

    FLUSH PRIVILEGES;
    
  3. SELECTクエリを再度実行して、ユーザーが作成されたことを確認します。

    SELECT User, Host, authentication_string FROM mysql.user;
    
    +------------------+-----------+-------------------------------------------+
    | User             | Host      | Password                                  |
    +------------------+-----------+-------------------------------------------+
    | root             | localhost | *756FEC25AC0E1823C9838EE1A9A6730A20ACDA21 |
    | mysql.session    | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
    | mysql.sys        | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
    | debian-sys-maint | localhost | *27E7CA2445405AB10C656AFD0F86AF76CCC57692 |
    | demouser         | localhost | *0756A562377EDF6ED3AC45A00B356AAE6D3C6BB6 |
    +------------------+-----------+-------------------------------------------+
    
データベースユーザー権限を付与する

新しいユーザーを作成した直後は、特権はありません。ユーザーはログインできますが、データベースの変更には使用できません。

  1. 次のコマンドを実行して、新しいデータベースに対する完全なアクセス許可をユーザーに付与します。

    GRANT ALL PRIVILEGES ON demodb.* to demouser@localhost;
    
  2. 次のコマンドを実行して、変更を公式にするための特権をフラッシュします。

    FLUSH PRIVILEGES;
    
  3. これらの特権が設定されていることを確認するには、次のコマンドを実行します。

    SHOW GRANTS FOR 'demouser'@'localhost';
    2 rows in set (0.00 sec)
    

    サーバーを再構築する場合、MySQLはそのユーザーの権限を再現するために必要なコマンドを返します。 USAGE on \*.\* これは、ユーザーがデフォルトで何に対しても特権を取得しないことを意味します。そのコマンドは、新しいデータベースに対して実行した許可である2番目のコマンドによって上書きされます。

    +-----------------------------------------------------------------------------------------------------------------+
    | Grants for demouser@localhost                                                                                   |
    +-----------------------------------------------------------------------------------------------------------------+
    | GRANT USAGE ON *.* TO 'demouser'@'localhost' IDENTIFIED BY PASSWORD '*0756A562377EDF6ED3AC45A00B356AAE6D3C6BB6' |
    | GRANT ALL PRIVILEGES ON `demodb`.* TO 'demouser'@'localhost'                                                    |
    +-----------------------------------------------------------------------------------------------------------------+
    2 rows in set (0.00 sec)
    
概要

データベースとユーザーを作成するだけであれば、これで完了です。ここで取り上げる概念は、詳細を学ぶための確実な出発点となるはずです。

関連記事
  • UbuntuオペレーティングシステムでMySQLサーバーを構成する
  • MySQLのrootパスワードをリセットする

Linux
  1. Ubuntu16.04にMySQLサーバーをインストールする方法

  2. Ubuntu17.04にMySQLサーバーをインストールする方法

  3. Ubuntu18.04にMySQLをインストールする方法

  1. UbuntuにApacheWebサーバーをインストールする方法

  2. UbuntuオペレーティングシステムにIMAPforPHP7.1をインストールします

  3. Ubuntu 22.04 に MySQL をインストールする方法

  1. Ubuntu16.04にMySQLをインストールする方法

  2. UbuntuオペレーティングシステムでMySQLサーバーを構成する

  3. Ubuntuオペレーティングシステムで再起動をスケジュールする