Tips

MySQL データベースへの接続 【初級編 第2回】

MySQL データベースへの接続 【初級編 第2回】

MySQLデータベースへの接続

MySQL内にmysqlクライアントを使用して接続する方法を記述する。

接続方法

yumを使用した際には初期設定をしなくてもいいが、ソースやパッケージインストールした場合には初期設定をすることで、
データベースにログインできるようになる。

mysqldが起動した状態で下記のコマンドを入力するとデータベースに接続ができる
# mysql

ここではrootユーザでログインをしている(yum install mysql した場合は、接続ユーザ名を指定しなければ rootで接続するようになっている)
yumでインストールした場合は -u オプションでDBへの接続ユーザ名を指定しない場合、rootユーザでログインするよう設定されている

接続するとプロンプトが下記のように変わる
mysql>

デフォルトユーザに関して

mysqlに接続する際のユーザは、shell上に作成するユーザとは別物である。
mysqlに接続する際のユーザは、mysql上のデータベースで管理している。
ユーザの種類には3種類あって、rootユーザ(すべての操作が可能)、一般ユーザ(権限割り当てる)、匿名ユーザ(あまり権限なし)の3種類がある。

MySQL上のユーザの確認

どんなユーザがデータベース上に登録されているかは以下のコマンドで確認ができる。
userの欄に何も書かれていなくてホスト名のみ書かれているのは、匿名ユーザである。
mysql> select user,host from mysql.user;
+——+———————–+
| user | host |
+——+———————–+
| root | 127.0.0.1 |
| | localhost |
| root | localhost |
| | localhost.localdomain |
| root | localhost.localdomain |
+——+———————–+
5 rows in set (0.00 sec)

最初から作成されているユーザが、rootユーザと匿名ユーザである。
mysqlでDBに接続するためユーザは最初から2つのユーザ(rootと匿名ユーザ)が作成されている
さらにそれぞれのユーザはローカル(そのOS上から接続)から接続する場合と、ネットワーク越し(他のホストから接続)から接続する場合では、
別々のユーザで扱われるので(権限などが)実際には4ユーザ存在しているということになる。

つまりmysqlサーバに接続する際には以下のようにして接続するのだが
# mysql -h サーバ名 -u ユーザ名

ここでいうサーバ名は以下の2種類がある

  • “localhost” は、UNIXソケットでの接続を意味している
  • “サーバ名やIPアドレス” は、MySQLが動作しているサーバ自身のホスト名で外部からの接続を意味している

デフォルトでは、ユーザ名には以下の2種類がある

  • rootユーザ。最初から作成されているすべての権限を持ったユーザ。
  • 上記の出力で、host側に localhostなどの表記があるが user側に何も記載されていないものは匿名ユーザということになる。

ちなみにデータベース上に作成していないユーザ名(たとえばShell上には存在するが、データベース上には作成していないユーザ)を指定して接続した場合
匿名ユーザでの接続を無効にしていなければ、匿名ユーザの権限で接続できる。
匿名ユーザでログインしても mysql> show databases; でデータベースを見たりすることはできるが、mysql> create database testdb; で作成したりすることはできない

デフォルトユーザに関して補足

root@localhostとは、unixソケットを経由して接続するMySQL上の管理者権限を持ったユーザ
root@dbserverとは、tcp/ipソケットを経由して接続するMySQL上の管理者権限を持ったユーザ
@localhostとは、unixソケットを経由して接続する匿名ユーザ(どんなユーザでも接続可能なユーザ)
@servernameとは、tcp/ipソケットを経由して接続する匿名ユーザ(どんなユーザでも接続可能なユーザ)

デフォルトでは匿名ユーザが登録されているので、mysqlをインストールしているサーバーからは、どんなユーザでもmysqlに接続できてしまう。
(あまり権限がないので実行できることは少ないが)
またパスワードはrootには登録されていないので、設定しておいたほうがよい。
上記のようにデフォルトでは、localhost や localhost.localdomainの表記なので、外部のホストからは接続ができない。
新しくユーザを作成した際に ホスト名のところに、”%” が登録されているものは、外部のホストからの接続が可能ということを意味する。

以上です。

SQLが学べる 関連連載リンク

データベースの基礎が学べるSQL基礎講座
SQL基礎 連載

練習問題を通じてSQL理解度アップの人気連載!
SQL練習問題集

Recent News

Recent Tips

Tag Search