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.cnf
のdatadir
に指定してある。 - 外部ホストから許可するのに
bind-address
の記述はアドレスのみで、192.168.1.*
のようなネットワークアドレスは指定できない。 - msys2(Windows)には、
pacman -Ss mysql
で検索してみたがmysqlクライアントのパッケージは無さそう。
参考
- MySQL
- MySQL :: MySQL Community Edition
- UbuntuにMySQLをインストールするところからテーブル作成までの方法 – プログラミングは芸術だ!
- Ubuntu 16.04 LTS : MySQL : インストール : Server World
- UbuntuにMySQLをインストール – うまとま君の技術めも
- ユーザーの作成(CREATE USER文) – ユーザーの作成 – MySQLの使い方
- MySQLでユーザー一覧を確認する「mysql.userテーブル」 | UX MILK
- MySQLの外部接続の設定 – Qiita
- Ubuntu でMySQL に外部ホストからの接続を許可するには待受IP指定を外さなあかんというお話 – 極上の人生
- ユーザ権限の確認・追加 – Qiita
- Ubuntu で MySQL – Qiita
- Mac へ MySQL を Homebrew でインストールする手順 – Qiita
- 権限の設定(GRANT文) – ユーザーの作成 – MySQLの使い方
- [MySQL]権限の確認と付与 – Qiita
- MySQLのGRANT(権限)の追加/削除/確認 – それマグで!
- MySQLがデータを保管する場所 〜 データディレクトリ – 日常メモ
- MySQL :: MySQL 5.6 リファレンスマニュアル :: 10.1.5 アプリケーションの文字セットおよび照合順序の構成
コメント