MySQLは、無料で広く使用されているオープンソースのリレーショナルデータベースです。データベースが必要であることはわかっているが、利用可能なすべてのオプションについてあまり知らない場合に適しています。
この記事では、UbuntuオペレーティングシステムへのMySQLデータベースサーバーの基本的なインストールについて説明します。 PHPの拡張機能など、アプリケーションが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
に焦点を当てています。 シェル。
-
コマンドプロンプトで、次のコマンドを実行して
mysql
を起動します シェルを作成し、rootユーザーとして入力します:/usr/bin/mysql -u root -p
-
パスワードの入力を求められたら、インストール時に設定したパスワードを入力します。パスワードを設定していない場合は、 Enterを押します。 パスワードなしを送信します。
次の
mysql
シェルプロンプトが表示されます:mysql>
空白のパスワードを入力してログインした場合、または設定したrootpasswordを変更する場合は、パスワードを作成または変更できます。
-
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';
-
変更を有効にするには、次のコマンドを使用して、保存されているユーザー情報を再読み込みします。
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という名前のユーザー 作成されます。
-
新しいユーザーを作成するには、
mysql
で次のコマンドを実行します シェル:INSERT INTO mysql.user (User,Host,authentication_string,ssl_cipher,x509_issuer,x509_subject) VALUES('demouser','localhost',PASSWORD('demopassword'),'','','');
-
ユーザーに変更を加えたとき mysqlのテーブル データベースで、次のように、権限をフラッシュして変更を読み取るようにMySQLに指示します。
FLUSH PRIVILEGES;
-
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 | +------------------+-----------+-------------------------------------------+
新しいユーザーを作成した直後は、特権はありません。ユーザーはログインできますが、データベースの変更には使用できません。
-
次のコマンドを実行して、新しいデータベースに対する完全なアクセス許可をユーザーに付与します。
GRANT ALL PRIVILEGES ON demodb.* to demouser@localhost;
-
次のコマンドを実行して、変更を公式にするための特権をフラッシュします。
FLUSH PRIVILEGES;
-
これらの特権が設定されていることを確認するには、次のコマンドを実行します。
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パスワードをリセットする