サポートネットワーク
UbuntuオペレーティングシステムにMySQL Serverをインストールする
最終更新日: 2019-12-20
投稿者:ジェレド-ヘーシェン
MySQLは、無料で広く使用されているオープンソースのリレーショナルデータベースです。 データベースが必要であるが、利用可能なすべてのオプションについてあまり知らないことがわかっている場合は、良い選択です。
この記事では、Ubuntuオペレーティングシステム上のMySQLデータベースサーバーの基本的なインストールについて説明します。 PHPの拡張機能のように、アプリケーションがMySQLを使用できるようにするには、他のパッケージをインストールする必要があるかもしれません。 詳細については、applicationdocumentationを確認してください。
Mysqlをインストール
Ubuntuオペレーティングシステムのパッケージマネージャーを使用してMySQLサーバーをインストールします:
sudo apt-get updatesudo apt-get install mysql-server
インストーラはMySQLとすべての依存関係をインストールします。
インストールの完了後にセキュアインストールユーティリティが自動的に起動しない場合は、次のコマンドを入力します:
sudo mysql_secure_installation utility
このユーティリティは、mysql rootパスワードと、rootユーザーのリモートアクセスの削除やrootパスワードの設定など、その他のセキュリティ関連のオプションを定義す
リモートアクセスを許可
iptablesを有効にしていて、別のマシンからMySQLデータベースに接続する場合は、サーバーのファイアウォールでポートを開く必要があります(defaultportは3306)。 Mysqlを使用するアプリケーションが同じサーバー上で実行されている場合は、これを行う必要はありません。
次のコマンドを実行して、mysqlサーバーへのリモートアクセスを許可します:
sudo ufw enablesudo ufw allow mysql
MySQLサービスの開始
インストールが完了したら、次のコマンドを実行してデータベースサービスを開始できます。 サービスが既に開始されている場合は、サービスが既に実行されていることを通知します:
sudo systemctl start mysql
再起動時に起動
再起動後にデータベースサーバーが起動するようにするには、次のコマンドを実行します:
sudo systemctl enable mysql
Configure interfaces
MySQLは、デフォルトでリモートでアクセスできるインターフェイスにバインドされなくなりました。/Etc/mysql/mysqlの”bind-address”ディレクティブを編集します。コンフ…d/mysqld.cnf:
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キーを押してnopasswordを送信します。
次の
mysql
シェルプロンプトが表示されます:mysql>
rootパスワードを設定する
空白のパスワードを入力してログインした場合、または設定したrootpasswordを変更する場合は、パスワードを作成または変更できます。
-
MySQL5.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コマンドにはall-capsを使用しています。 Thosecommandsを小文字で入力すると、動作します。 慣例により、コマンドはすべて大文字で書かれており、操作されているフィールド名やその他のデータから目立つようになっています。
後でrootパスワードをリセットする必要がある場合は、”MySQL rootパスワードのリセット”を参照してください。
ユーザーの表示
MySQLは、ユーザー情報を独自のデータベースに格納します。 データベースの名前はmysqlです。 そのデータベース内では、ユーザー情報はテーブルadataset、名前付きuserにあります。 MySQLuserテーブルでどのユーザーが設定されているかを確認するには、次のコマンドを実行します:
SELECT User, Host, authentication_string FROM mysql.user;
次のリストでは、そのコマンドの部分について説明します:
- SELECTは、データを要求していることをMySQLに伝えます。
- User,Host,authentication_stringは、mysqlにどのフィールドを検索するかを指示します。 フィールドは、テーブル内のデータのカテゴリです。 この場合、ユーザー名、ユーザー名に関連付けられたホスト、および暗号化されたパスワードエントリを探しています。Mysqlから
- 。user”は、mysqldatabaseとuserテーブルからデータを取得するようにMySQLに指示します。
- セミコロン(;)でコマンドを終了します。
注:すべてのSQLクエリはセミコロンで終わります。 セミコロンを入力するまで、MySQLはqueryuntを処理しません。
ユーザーホスト
次の例は、前のクエリの出力です:
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つのホストのみにユーザーを設定する必要があります。
MySQLserverと同じコンピュータ上でアプリケーションを実行している場合、デフォルトで接続するホストはlocalhostです。 作成するnewusersには、hostフィールドにlocalhostが必要です。
アプリケーションがリモートで接続する場合、MySQLが検索するホストエントリは、リモートコンピュータのIPアドレスまたはDNSホスト名です(クライアント
Anonymous users
出力例では、1つのエントリにhost値がありますが、ユーザー名またはパスワードはありません。それは匿名ユーザーです。 クライアントがユーザー名を指定せずに接続すると、匿名ユーザーとして接続しようとしています。
通常は匿名ユーザーは必要ありませんが、一部のMySQLインストールにはデフォルトで1つが含まれています。 表示された場合は、ユーザーを削除するか(”のような空の引用符で囲まれたユーザー名を参照)、パスワードを設定する必要があります。
データベースを作成する
データベースサーバーとデータベースの間には違いがあります。 MySQLはデータベースサーバーであり、データベースを追跡し、それらへのアクセスを制御します。 データベースにはデータが格納され、アプリケーションがMySQLと対話するときにアクセスしようとしているデータベースです。
一部のアプリケーションは、セットアッププロセスの一環としてデータベースを作成しますが、他のアプリケーションでは、データベースを自分で作成し、アプ
データベースを作成するには、mysql
シェルにログインし、次のコマンドを実行します。demodb
を作成するデータベースの名前に置き換えます:
CREATE DATABASE demodb;
データベースが作成されたら、クエリtolist all databasesを実行することで、データベースの作成を確認できます。 次の例は、クエリと出力例を示しています:
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データベース内のuserテーブルに変更を加える場合は、次のように権限をフラッシュして変更を読み取るようにtellMySQLに指示します:
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 |+------------------+-----------+-------------------------------------------+
データベースユーザーの権限を付与する
新しいユーザーを作成した直後には、権限はありません。 ユーザーはログインできますが、データベースの変更には使用できません。
概要
データベースとユーザーを作成するだけで完了です。 ここで説明したconceptscoveredは、より多くのことを学ぶための堅実なスタートを与えるはずです。
- UbuntuオペレーティングシステムでMySQLサーバーを設定する
- MySQL rootパスワードをリセットする