「MySQL」とは一般的にインストールされているオープンソースデータベース管理システムです。
この導入手順では、Ubuntu Server 20.04にMySQLをインストールし、データベースを管理できるようにします。
導入手順
- 以前にMySQLをインストールしていて真っ新な状態で始めたい場合は以下のコマンドで完全にアンインストールします。
sudo apt remove --purge mysql-server* mysql-common
sudo apt autoremove --purge
sudo rm -r /etc/mysql
sudo rm -r /var/lib/mysql
- MySQLのパッケージをインストールします。
sudo apt update && sudo apt install -y mysql-server
- セキュリティを高める設定を開始します。
sudo mysql_secure_installation
・初めのVALIDATE PASSWORDを設定するプロンプトではY
を入力します。
・パスワードの複雑さの設定では0
,1
,2
の中から自分好みのものを選んでください。
・MySQLのrootユーザー(管理者)のパスワード設定を求められるため、パスワードを設定します。
・このパスワードでいいですか?と聞かれるのでY
を入力します。
・残りの設定は全部Y
でいいと思います。
- 全ての権限を持っているrootユーザーは普段使いたくありません。新しいユーザーを作成するため、MySQLのプロンプトを起動します。
sudo mysql
CREATE USER
でユーザー作成をします。username
を任意のユーザー名に、password
を任意のパスワードに代入するのを忘れないようにしてください。localhost
を%
にすることで全てのホストから接続できますが、できるだけ接続可能なホストを制限した方がよいです。
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
# 例
CREATE USER 'guresql'@'192.168.0.35' IDENTIFIED BY 'Test12345!';
作成したユーザーに権限を与えます。
database
に権限を与えるデータベースを指定します。table
にデータベースの中で権限を与えるテーブルを指定できます。全データベースの権限を付与する場合はアスタリスクで設定できます(*.*
)。
ALL PRIVILEGES
でデータベースに対して全ての権限を与えます。実行可能な処理を限定する場合はSELECT, INSERT
のようにカンマで実行可能な処理をつなげて下さい。
WITH GRANT OPTION
を付けることにより、このユーザーが他のユーザーに権限を付与できるようになります。
GRANT ALL PRIVILEGES ON database.table TO 'username'@'localhost' WITH GRANT OPTION;
# 例
GRANT ALL PRIVILEGES ON *.* TO 'guresql'@'192.168.0.35';
最後にキャッシュをクリアしておき、MySQLのプロンプト画面を閉じます。
FLUSH PRIVILEGES;
exit
- 外部から接続できるようにするため、MySQLのポートを開放します。UFWが既にインストールされていない場合は
sudo apt install ufw
でインストールします。
sudo ufw allow 3306
- 標準だとMySQLはローカル(
127.0.0.1
またはlocalhost
)からのアクセスしか許可していないため、外部ネットワークからでもアクセスできるように変更します。まずは設定ファイルを開きます。
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address
をコメントアウトして編集画面を閉じます。
# bind-address = 127.0.0.1
MySQLを再起動します。
sudo systemctl stop mysql
sudo systemctl start mysql
※もしエラーで起動できなかった場合は、下記のコマンドでディレクトリ権限を修正してみてください。
sudo systemctl stop mysql
sudo mv /var/lib/mysql /tmp/mysql
sudo mkdir /var/lib/mysql
sudo chown -R mysql:mysql /var/lib/mysql
sudo mysqld --initialize
sudo systemctl start mysql
- 外部ネットワークからもログインできることを確認します。
mysql -h host -P 3306 -u username -p
# 例
mysql -h 192.168.0.99 -P 3306 -u guresql -p