CentOS 7のリリースにより、MariaDBはデフォルトのデータベースシステムとしてMySQLに取って代わりました。 MariaDBは、MySQLの最初の開発者によって作成され、ライブラリバイナリと同等であり、MySQLAPIおよびコマンドと完全に一致するMySQLの拡張されたドロップイン置換です。
この記事では、CentOSLinuxへのMariaDBデータベースサーバーの基本的なインストールについて説明します。 PHPの拡張機能など、アプリケーションでMariaDBを使用できるようにするには、他のパッケージをインストールする必要がある場合があります。詳細については、アプリケーションのドキュメントを確認してください。
このセクションの手順に従って、コアデータベースサーバーをインストールします。
MariaDBをインストール
コマンドプロンプトで次のコマンドを実行して、CentOSパッケージマネージャー(yum)からMariaDBサーバーをインストールします。
sudo yum install mariadb-server
次のコマンドを実行して、リモートアクセスを許可します。
firewall-cmd --zone=public --add-service=mysql --permanent
MariaDBデータベースサーバーをインストールしたばかりなので、rootaccountにはパスワードが設定されていません。次のコマンドを使用して、rootパスワードおよびその他の重要な設定を設定します。
/usr/bin/mysql_secure_installation
インストールが完了したら、このセクションのコマンドを使用してデータベースサービスを開始できます。システムがすでに起動している場合は、サービスがすでに実行されていることを通知するメッセージが表示されます。
次のコマンドを使用してMariaDBを起動します:
sudo systemctl start mariadb.service
次のコマンドを使用して、MariaDBを停止します。
sudo systemctl stop mariadb.service
再起動後にデータベースサーバーを確実に起動するには、 chkconfig
を有効にする必要があります 効用。これを行うには、次のコマンドを使用します。
sudo systemctl enable mariadb.service
MariaDBシェルを開始します
MariaDBサーバーを操作する方法は複数ありますが、この記事では、最も基本的で互換性のあるアプローチである mariadb
に焦点を当てています。 シェル。
-
コマンドプロンプトで、次のコマンドを実行してシェルを起動し、rootユーザーとして入力します。
/usr/bin/mysql -u root -p
-
パスワードの入力を求められたら、インストール時に設定したパスワードを入力します。パスワードを設定していない場合は、 Enterを押します。 パスワードなしを送信します。
次のシェルプロンプトが表示されます。
MariaDB [(none)]>
MariaDBとMySQLは、ユーザー情報を独自のデータベースに保存します。データベースの名前はmysqlです。 。そのデータベース内のユーザー情報は、 userという名前のデータセットであるテーブルにあります。 。 MySQLユーザーテーブルに設定されているユーザーを確認するには、次のコマンドを実行します。
SELECT User, Host, Password FROM mysql.user;
次のリストは、そのコマンドの部分を説明しています。
- 選択 データを要求していることをMySQLに通知します。
- ユーザー、ホスト、パスワード 調べたいフィールドをMySQLに指示します。フィールドはテーブル内のデータのカテゴリです。この場合、ユーザー名、ユーザー名に関連付けられているホスト、および暗号化されたパスワードエントリを探しています。
- FROM mysql.user mysqlからデータを取得するようにMySQLに指示します データベースとユーザー テーブル。
- セミコロン(;) コマンドを終了します。
次の例は、前のクエリの出力です。
SELECT User, Host, Password FROM mysql.user;
+------------------+-----------+-------------------------------------------+
| User | Host | Password |
+------------------+-----------+-------------------------------------------+
| root | localhost | *756FEC25AC0E1823C9838EE1A9A6730A20ACDA21 |
| root | 127.0.0.1 | *756FEC25AC0E1823C9838EE1A9A6730A20ACDA21 |
| root | ::1 | *756FEC25AC0E1823C9838EE1A9A6730A20ACDA21 |
+------------------+-----------+-------------------------------------------+
ユーザーは、ホスト、特にユーザーが接続するホストに関連付けられています。この例のrootユーザーは、 localhostに対して定義されています。 、 localhostのIPアドレスの場合 、およびサーバーのホスト名。通常、接続元のホストのみにユーザーを設定する必要があります。
MariaDBサーバーと同じコンピューターでアプリケーションを実行している場合、アプリケーションがデフォルトで接続するホストは localhostです。 。作成する新しいユーザーには、 localhostが必要です。 彼らのホストで フィールド。
アプリケーションがリモートで接続する場合は、ホスト MariaDBが検索するエントリは、リモートコンピューター(クライアントの送信元のコンピューター)のIPアドレスまたはDNSホスト名です。
データベースサーバーには違いがあります およびデータベース とはいえ、これらの用語はしばしば同じ意味で使用されます。 MariaDBはデータベースサーバーです。つまり、データベースを追跡し、データベースへのアクセスを制御します。データベースにはデータが格納されており、アプリケーションがMariaDBと対話するときにアクセスしようとしているのはデータベースです。
セットアッププロセスの一部としてデータベースを作成するアプリケーションもありますが、データベースを作成してアプリケーションに通知する必要があるアプリケーションもあります。
データベースを作成するには、 mariadb
にログインします シェルを作成して次のコマンドを実行し、 demodb
を置き換えます 作成するデータベースの名前:
CREATE DATABASE demodb;
データベースが作成されます。クエリを実行してすべてのデータベースを一覧表示することにより、作成を確認できます。次の例は、クエリと出力例を示しています。
SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| demodb |
| mysql |
+--------------------+
3 rows in set (0.00 sec)
このセクションの手順を使用して、データベースのユーザーを追加し、特権を付与および取り消します。
アプリケーションがrootユーザーを使用してデータベースに接続する場合、通常、必要以上の特権があります。アプリケーションが新しいデータベースに接続するために使用できる新しいユーザーを作成できます。次の例では、 demouserという名前のユーザー 作成されます。
新しいユーザーを作成するには、 mariadb
で次のコマンドを実行します シェル:
CREATE USER 'demouser'@'localhost' IDENTIFIED BY 'demopassword';
SELECTクエリを再度実行すると、ユーザーが作成されたことを確認できます。
SELECT User, Host, Password FROM mysql.user;
+----------+-----------+------------------------------------------+
| User | Host | Password |
+----------+-----------+------------------------------------------+
| root | localhost | 2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
| root | demohost | 2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
| root | 127.0.0.1 | 2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
| demouser | localhost | 0756A562377EDF6ED3AC45A00B356AAE6D3C6BB6 |
+----------+-----------+------------------------------------------+
新しいユーザーを作成した直後は、特権はありません。ユーザーはMariaDBへのログインに使用できますが、データベースの変更には使用できません。
-
次のコマンドを実行して、新しいデータベースに対する完全な権限をユーザーに付与します。
GRANT ALL PRIVILEGES ON demodb.* to demouser@localhost;
-
権限をフラッシュして、変更を有効にします。
FLUSH PRIVILEGES;
-
特権が設定されていることを確認するには、次のコマンドを実行します。
SHOW GRANTS FOR 'demouser'@'localhost';
サーバーを再構築する場合、MariaDBはそのユーザーの権限を再現するために必要なコマンドを返します。
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)
ユーザーから特権を取り消す(削除する)必要がある場合があります。たとえば、 ALL
を付与したとします。 次のコマンドに示すように、「demouser」@「localhost」に対する権限が、他のすべてのデータベースにも誤って付与されました。
+-----------------------------------------------------------------------------------------------------------------+
| Grants for demouser@localhost |
+-----------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'demouser'@'localhost' IDENTIFIED BY PASSWORD '*0756A562377EDF6ED3AC45A00B356AAE6D3C6BB6' |
| GRANT ALL PRIVILEGES ON *.* TO 'demouser'@'localhost' |
+-----------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
間違いを修正するには、 REVOKE
を使用できます ステートメントの後にGRANT
が続きます 正しい特権を適用するためのステートメント。
REVOKE ALL ON *.* FROM demouser@localhost;
GRANT ALL PRIVILEGES ON demodb.* to demouser@localhost;
SHOW GRANTS FOR 'demouser'@'localhost';
+-----------------------------------------------------------------------------------------------------------------+
| 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)
これで、ユーザーは適切な権限を持ち、データベースサーバーは少し安全になります(*。* でALLのような権限を付与します) 非常に悪い習慣と見なされます)。
ALL
を使用するのではなく、本当に必要な特権のみを付与するために、可能な特権の選択に関する公式のMariaDBドキュメントも読む必要があります。 。
データベースとユーザーを作成するだけであれば、これで完了です。この記事で取り上げる概念は、詳細を学ぶための確実な出発点となるはずです。