UbuntuへのMySQLインストール手順と設定

UbuntuMySQLをインストールして利用する手順です。少しだけ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アドレスで接続)、追加で以下の設定が必要です。

  1. 接続したMySQLで次のコマンドを実行する
    mysql> CREATE USER '<ユーザー>'@<ホスト> IDENTIFIED WITH mysql_native_password BY '<パスワード>';
    mysql> GRANT ALL PRIVILEGES ON <データベース>.<テーブル> TO '<ユーザー>'@<ホスト>;
    mysql> FLUSH PRIVILEGES;
    
  2. ユーザーが追加されたことを確認する
    '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 |
    +------------------+-----------+
    
  3. /etc/mysql/mysql.conf.d/mysqld.cnfの次の行をコメントアウトする
    または接続を許可するIPアドレスに変更する
    bind-address        = 127.0.0.1
    
    ※Linuxの場合のみ。Windowsの場合は不要
  4. 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共通です。

  1. 次のコマンドを実行し、タイムゾーンテーブルをロードする
    $ /usr/bin/mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
    
  2. /etc/my.cnf[mysqld]を追加または変更する
    $ sudo vim /etc/my.cnf
    
    [mysqld]
    default-time-zone = 'Asia/Tokyo'
    
    my.cnfファイルが存在しない場合、新規作成します
  3. MySQLをリスタートする
  4. 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
このエントリーをはてなブックマークに追加
にほんブログ村 IT技術ブログへ

コメント

メールアドレスが公開されることはありません。 が付いている欄は必須項目です