UbuntuへのMySQLインストール手順と設定
UbuntuにMySQLをインストールして利用する手順です。少しだけCentOSの手順も記載します。
バージョン
- Ubuntu(WSL) - 20.04.2 LTS
- MySQL - 8.0.23(サーバ) / 8.0.23(クライアント)
MySQLのインストール
$ sudo apt install mysql-server
アンインストール
失敗時など、アンインストールしたいとき。
$ sudo apt remove --purge mysql-server
$ sudo apt remove --purge mysql-client
$ sudo apt remove --purge mysql-common
$ sudo apt autoremove --purge
$ sudo rm -r /etc/mysql
$ sudo rm -r /var/lib/mysql
参考
サービスの開始と停止
サービスの開始
$ sudo service mysql start
サービスの停止
$ sudo service mysql stop
サービスの状態確認
$ sudo service mysql status
MySQLに接続する
$ sudo mysql -u root -p
初期ユーザーroot
の初回パスワードは空白になります。
MySQLから切断する
mysql> exit
MySQLのバージョン確認
サーババージョン
MySQL接続後、次のコマンドを実行します。
mysql> select version();
クライアントバージョン
Ubuntuのコマンドラインで次のコマンドを実行します。
$ mysql --version
接続設定を行う
rootユーザーにパスワードを設定する
localhost指定で他プログラムから接続するために、次のコマンドを実行し、パスワードを設定します。
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<パスワード>';
mysql> FLUSH PRIVILEGES;
外部接続用のユーザーを追加する
localhost以外で接続する場合(外部からの接続や、同一マシン内でもマシン名やIPアドレスで接続)、追加で以下の設定が必要です。
- 接続したMySQLで次のコマンドを実行する
mysql> CREATE USER '<ユーザー>'@<ホスト> IDENTIFIED WITH mysql_native_password BY '<パスワード>'; mysql> GRANT ALL PRIVILEGES ON <データベース>.<テーブル> TO '<ユーザー>'@<ホスト>; mysql> FLUSH PRIVILEGES;
- ユーザーが追加されたことを確認する
'root'@'%'
を追加した場合
mysql> select user,host from mysql.user; +------------------+-----------+ | user | host | +------------------+-----------+ | root | % | | debian-sys-maint | localhost | | mysql.infoschema | localhost | | mysql.session | localhost | | mysql.sys | localhost | | root | localhost | +------------------+-----------+
/etc/mysql/mysql.conf.d/mysqld.cnf
の次の行をコメントアウトする
または接続を許可するIPアドレスに変更する
※Linuxの場合のみ。Windowsの場合は不要bind-address = 127.0.0.1
- MySQLをリスタートする
記述例
項目 | 記述 | 内容 |
---|---|---|
ホスト | localhost | localhostからの接続を許可 |
ホスト | '%' | 全ての接続元を許可 |
データベース | dbname | dbnameへの権限を追加 |
データベース | * | 全てのデータベースへの権限を追加 |
テーブル | tabelname | tabelnameへの権限を追加 |
テーブル | * | 全てのテーブルへの権限を追加 |
タイムゾーンを設定する
MySQLに接続した状態で、次のコマンドを実行すると、現在のタイムゾーンを確認できます。
mysql> show variables like '%time_zone%';
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| system_time_zone | JST |
| time_zone | SYSTEM |
+------------------+--------+
タイムゾーンを変更する
Ubuntu、CentOS共通です。
- 次のコマンドを実行し、タイムゾーンテーブルをロードする
$ /usr/bin/mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
/etc/my.cnf
に[mysqld]
を追加または変更する
$ sudo vim /etc/my.cnf
[mysqld] default-time-zone = 'Asia/Tokyo'
my.cnf
ファイルが存在しない場合、新規作成します- MySQLをリスタートする
- MySQLに接続し、タイムゾーンが変更されたことを確認する
mysql> show variables like '%time_zone%'; +------------------+------------+ | Variable_name | Value | +------------------+------------+ | system_time_zone | JST | | time_zone | Asia/Tokyo | +------------------+------------+
データベースのダンプとインポート
データベースの内容をダンプする
$ mysqldump -u root -p <データベース名> > <出力ダンプファイル名>
出力ダンプファイル名はxxxx.sql
など。
ダンプしたデータベースをインポートする
あらかじめデータベースを用意しておくこと。
$ sudo mysql -u root -p <データベース名> < <ダンプファイル名>
MySQL接続で使うコマンド
ユーザの権限を全て消す
GRANTで指定した権限を消します。
mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM '<ユーザ名>'@<ホスト>
プロセスを確認する
mysql> show processlist;
SQLファイルを実行する
/home/<ユーザ名>/sql/test.sql
を実行する場合
mysql> source /home/<ユーザ名>/sql/test.sql;
参考:WindowsのMySQLの場合
source C:/work/sql/test.sql;
データベースの一覧を表示する
mysql> show databases;
データベースを作成する
mysql> create database <データベース名>;
データベースを削除する
mysql> drop database <データベース名>;
データベースを選択する
use <データベース名>;
選択しているデータベースを確認する
select database();
CentOSの場合
インストール方法
参考サイト:MySQL 8.0 を CentOS 8.1 にインストールする手順 - Qiita
サービスの開始
$ systemctl start mysqld
サービスの停止
$ systemctl stop mysqld
サービスの状態確認
$ systemctl status mysqld
MySQLに接続する
$ mysql -u root -p
MySQLから切断する
mysql> exit