【Ubuntu 16.04 LTS Server】MySQLサーバをインストール

スポンサーリンク

Ubuntu ServerでMySQLサーバを使えるようにしたので、備忘録を残す。
これからWordPressやWikiサーバを動かしていきたい。

準備

MySQLサーバのインストール

$ sudo apt install mysql-server
  • MySQL上での、rootユーザのパスワードを聞かれるので入力する。

ローカルコンソールからMySQLサーバに接続

$ mysql -u root -p

状態表示

mysql> status

ユーザ一覧表示

mysql> select user,host from mysql.user; 

データベース一覧表示

mysql> show databases;

特定のユーザーの権限確認

mysql> show grants for 'ユーザ名'@'ホスト名';

終了

mysql> exit

ユーザの作成と削除

ユーザの作成

mysql> create user ユーザ名 identified by 'password';
  • ユーザ名は、'ユーザ名'@'ホスト名'のように表す。ホスト名はMySQLへ接続するホスト名。サーバパソコンの場合はlocalhostとなる。ネットワークアドレスを指定する場合は192.168.1.%などのようにする。
    @以下ホスト名を省略した場合は、'ユーザ名'@'%'として扱われ、どのホストからも接続できる。
  • passwordは、パスワード。

ユーザの削除

mysql> drop user ユーザ名;

作成したユーザでMySQLへ接続

$ mysql -u ユーザ名 -p

外部ホストからの接続を許可する

MySQLの設定ファイルを編集し、bind-addressの行をコメントアウトする。

$ sudo -e /etc/mysql/mysql.conf.d/mysqld.cnf
#bind-address = 172.0.0.1

MySQLサービスを再起動

$ sudo service mysql restart

nmapでポートが開いているか確認

$ nmap <IPアドレス>
(結果)

PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
3306/tcp open  mysql
9418/tcp open  git

MySQLクライアントインストール(macOS)

Homebrewからインストール

$ brew install mysql --client-only

MySQLサーバへ接続

$ mysql -h サーバIP -u ユーザ名 -p

DBの文字コードをUTF-8にする

デフォルトの文字コードを確認すると、「latin1」になっている。

mysql> status
--------------
mysql  Ver 14.14 Distrib 5.7.17, for Linux (x86_64) using  EditLine wrapper

Connection id:      23
Current database:
Current user:       root@localhost
SSL:            Not in use
Current pager:      stdout
Using outfile:      ''
Using delimiter:    ;
Server version:     5.7.17-0ubuntu0.16.04.1 (Ubuntu)
Protocol version:   10
Connection:     Localhost via UNIX socket
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:        /var/run/mysqld/mysqld.sock
Uptime:         3 days 17 hours 12 min 15 sec

Threads: 1  Questions: 44  Slow queries: 0  Opens: 113  Flush tables: 1  Open tables: 32  Queries per second avg: 0.000
--------------

/etc/mysql/mysql.conf.d/mysqld.cnfファイルの[mysqld]セクションに下記行を追加する。

character-set-server = utf8

MySQLサービスの再起動

$ sudo service mysql restart

文字コードを確認すると、「UTF8」になっている。

mysql> status
--------------
mysql  Ver 14.14 Distrib 5.7.17, for Linux (x86_64) using  EditLine wrapper

Connection id:      4
Current database:
Current user:       root@localhost
SSL:            Not in use
Current pager:      stdout
Using outfile:      ''
Using delimiter:    ;
Server version:     5.7.17-0ubuntu0.16.04.1 (Ubuntu)
Protocol version:   10
Connection:     Localhost via UNIX socket
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:        /var/run/mysqld/mysqld.sock
Uptime:         16 sec

Threads: 1  Questions: 6  Slow queries: 0  Opens: 107  Flush tables: 1  Open tables: 26  Queries per second avg: 0.375
--------------

その他ツールの文字コードをUTF-8にする

/etc/mysql/conf.d/mysqldump.cnfファイルの[mysqldump]セクションに下記行を追加。

default-character-set=utf8

/etc/mysql/conf.d/mysql.cnfファイルの[mysql]セクションに下記行を追加。

default-character-set=utf8
  • 設定ファイルの編集は管理者権限が必要。sudo -e <ファイル名>などで編集する。

補足

  • ユーザ作成で、@以下のホスト名が違うと異なるユーザとして扱われる。
  • mysqlクライアントから入力するコマンドは、基本は大文字/小文字は区別しない。但し、データベース名のみはLinux環境では大文字/小文字は区別される。
  • mysqlクライアントからのコマンドで、最後に;で終わるものはSQL、ないものはmysqlに対するコマンド。
  • データベースの格納先はデフォルトでは/var/lib/mysql/
    /etc/mysql/mysql.conf.d/mysqld.cnfdatadirに指定してある。
  • 外部ホストから許可するのにbind-addressの記述はアドレスのみで、192.168.1.*のようなネットワークアドレスは指定できない。
  • msys2(Windows)には、pacman -Ss mysqlで検索してみたがmysqlクライアントのパッケージは無さそう。

参考

  1. MySQL
  2. MySQL :: MySQL Community Edition
  3. UbuntuにMySQLをインストールするところからテーブル作成までの方法 – プログラミングは芸術だ!
  4. Ubuntu 16.04 LTS : MySQL : インストール : Server World
  5. UbuntuにMySQLをインストール – うまとま君の技術めも
  6. ユーザーの作成(CREATE USER文) – ユーザーの作成 – MySQLの使い方
  7. MySQLでユーザー一覧を確認する「mysql.userテーブル」 | UX MILK
  8. MySQLの外部接続の設定 – Qiita
  9. Ubuntu でMySQL に外部ホストからの接続を許可するには待受IP指定を外さなあかんというお話 – 極上の人生
  10. ユーザ権限の確認・追加 – Qiita
  11. Ubuntu で MySQL – Qiita
  12. Mac へ MySQL を Homebrew でインストールする手順 – Qiita
  13. 権限の設定(GRANT文) – ユーザーの作成 – MySQLの使い方
  14. [MySQL]権限の確認と付与 – Qiita
  15. MySQLのGRANT(権限)の追加/削除/確認 – それマグで!
  16. MySQLがデータを保管する場所 〜 データディレクトリ – 日常メモ
  17. MySQL :: MySQL 5.6 リファレンスマニュアル :: 10.1.5 アプリケーションの文字セットおよび照合順序の構成

コメント

タイトルとURLをコピーしました