メニュー

関連ページリンク

トップ > Car > Car - 人気ブログ(Blog)検索結果詳細 (2009年1月9日 2時)

[MySQL]MySQL ユーザの作成・パスワードの設定

ユーザ名とパスワード

 通常MySQLサーバに接続する場合は、ユーザ名とパスワードを指定して接続します。

mysql --user=kimoto --password=honyarara

あるいは、

mysql -u kimoto -phonyarara
||
(-pとパスワードの間は空けないことに注意)

 MySQLをインストールした直後であれば、
>||
mysql

とコマンドを打つだけで、MySQLサーバに接続することができます。ユーザ名を与えない場合は、ログインユーザ名を与えて、mysqlサーバに接続し、パスワードが初期状態では設定されていないためです。

 ログインユーザとMySQLのユーザはまったく別物です。MySQLにログインユーザとしてはログインできません。kimotoというログインユーザがいても、mysqlサーバにkimotoというユーザで接続できるわけではありません。

ユーザを作成する意味

 rootユーザにはすべての権限が与えられています。MySQLのデータベースを利用する人の多くは、テーブルにあるデータを操作したり取得したいだけです。また特定のユーザに特定のデータベースに対する操作を許可するということもできます。データベースを利用する人のためにユーザを作成して、適切な権限を与えることができます。

クライアントのホスト名

 MySQLのユーザ管理には、そのユーザがどこから接続したかということが含まれます。たとえば、ローカルからkimotoで接続した場合とリモート(たとえばデータベースサーバとアプリケーションサーバが別にある場合など)から接続した場合では、異なるユーザとして扱われます。

 ローカルで接続した場合のユーザ名は、

kimoto@localhost

のようになります。

 www.honyara.comというホスト名を持つサーバから接続した場合は、

kimoto@www.honyara.com

 というユーザ名になります。この辺がMySQLのユーザ管理で少しわかりにくい部分です。

 「ユーザ名」@「どこから接続しているか」が、本当のユーザ名であると覚えておきましょう。

rootユーザのパスワードの設定

 まずデフォルトではrootユーザにパスワードがありませんから、パスワードを設定します。rootというのは、本当のユーザ名ではありません。root@localhostというのが、本当のユーザ名ですので、これに対してパスワードを設定します。

mysql

で接続して、

set password for root@localhost = password('パスワード');

とします。後ろの方のpassword('パスワード')はpassword関数で、暗号化されたパスワードを作成しています。

select user,host,password from mysql.user;

とコマンドを打ってみましょう。アカウント情報を見ることができます。uesr(ユーザ名)がrootで、ホスト名が「localhost.localdomain」や「127.0.0.1」などのlocalhostと同じものを意味するユーザに対しても同じパスワード設定しておく必要があるようです。(理由はよくわかりません)

set password for root@127.0.0.1 = password('パスワード');
set password for root@localhost.localdomain = password('パスワード');

紛らわしい引数 --host

 mysqlコマンドで、

mysql --host=some.remote.com --user=kimoto --passwrod=pekepeke

とホスト名を指定することがありますが、このホスト名は接続先のホスト名の指定になります。MySQLはTCP/IP接続でリモートのMySQLサーバに接続することができ、リモート接続したい場合に、--hostでホスト名を指定します。

 上で解説したアカウント管理のホスト名はクライアント(接続元)のホスト名ですのこんがらがらないようにしましょう。

ユーザを追加する構文

 ユーザの追加のコマンドはわかりにくです。ユーザを追加するというと、adduser見たいなコマンドを思い浮かべるかもしれませんが違います。

 MySQLでユーザを作成するコマンドは、grant文です。grant文は、本来ならユーザに特定の権限を与えるための文です。

 けれども、ユーザが存在しない場合に、grant文でユーザを指定して権限を与えるとユーザが作成されます。MySQLでは、ユーザに権限を与えることでユーザが新規に作成されると考えてください。

一般的ユーザの権限

 一般的なユーザは、次のような権限を持つユーザだと考えてよいと思います。

権限説明
selectselect文を使用して、データを取得できる
insertinsert文を使用して、データを挿入できる
deletedelete文を使用して、データを削除できる
updateupdate文を使用して、データを更新できる
createcreate文を使用して、テーブルを作成できる
dropdrop文を使用して、テーブルを削除できる
alteralter文を使用して、テーブルの定義を変更できる
indexindex文を使用して、インデックスを作成できる

grant文で一般ユーザを作成する

 grant文は以下のようになります。だいぶややこしいです。

 権限のリストには、上で解説した権限をカンマで区切って並べます。データベース名は、権限を与える対象のデータベース名を指定します。

 ユーザ名は username@hostnameのようにホスト名を含んだユーザ名を指定します。

 パスワードには、password関数を使わないで、平文でパスワードを設定します。grant文では、自動的にpassword関数が適用されるので使用する必要がありません。

grant 権限のリスト on データベース名(orテーブル名 ) to ユーザ名(ホスト名含む) identified by 'パスワード';

設定例を書いておきます。*.*はすべてのデータベースのすべてのテーブルという意味になります。

grant select,insert,delete,update,create,drop,alter,index on *.* to mysqluser@localhost identified by 'honyarara';

ユーザ名と権限の確認

 ユーザに与えられた権限を確認するには以下のようにします。

show grants for ユーザ名(ホスト名を含む);

 出力結果の1行目の「grant usage on 〜」というのは、権限が何もないという意味です。2行目が実際に与えた権限になっています。

権限の削除

 権限の削除は、revoke文を使用します。使用方法は、grant文とほぼ同じです。to が fromに変わるだけです。パスワードは必要ありません。

 一般ユーザの権限を消してみます。

revoke select,insert,delete,update,create,drop,alter,index on *.* from mysqluser@localhost;

関連記事

MySQLのインストール

データベースの作成、テーブルの作成

作者:perlcodesample

更新日:2009年1月8日 20時58分

このブログのホーム

[MySQL]PerlからMySQLサーバへ接続する。

 PerlからMySQLサーバに接続する方法を解説します。MySQLのインストールデータベースやテーブルの作成方法は理解しておく必要があります。(Fedora7の環境で解説しています。)

データベースに接続するためのインターフェイス DBI

 まずDBIをインストールします。DBIというのはデータベースに接続したり、SQLをリクエストしたり、結果を取り出したりするための関数の集まりのことです。

 Perlに同名のモジュールがあるのでインストールします。

cpan DBI

MySQLと実際にやり取りを行うドライバ DBD

 DBIは関数を提供しますが、実際は内部でDBDがデータベースとやり取りを行っています。DBDには、MySQL用、PostgreSQL用、Oracle用,SQLite用などさまざまな種類があります。

 MySQL用のDBDをインストールします。

cpan DBD::mysql

DBIとDBDとデータベースサーバのやり取りのイメージ

 DBIというのは、どのデータベースに接続するときも変わりません。DBIはデータベースに依存しないように作られた接続のための関数の集まりだからです。

 DBDというのが、データベースと実際にデータをやり取りをします。

|-----|       |-------------|         |-------------|
|     |       |             |         |             |
|     |-------| DBD::mysql  |---------| MySQL       |
|     |       |             |         |             |
|     |       |-------------|         |-------------|
| DBI |              
|     |       |-------------|         |-------------|
|     |       |             |         |             |
|     |-------| DBD::Oracle |---------| Oracle      |
|     |       |             |         |             |
|-----|       |-------------|         |-------------|

作者:perlcodesample

更新日:2009年1月8日 12時3分

このブログのホーム

[自作アプリ]YouTubeプレイヤー YouSukeをリリースしました。

 YouTubeプレイヤー YouSukeをリリースしました。YouTubeを便利に見るためのWebアプリです。

YouTubeプレイヤー YouSuke

YouTubeプレイヤー YouSuke

f:id:perlcodesample:20090104211412p:image

YouSukeの機能

 YouSukeは以下の機能があります。

  1. YouTubeの人気の動画、ジャンル別の動画を画面遷移することなく視聴することができます。
  2. リピート機能、順次再生機能、ランダム再生機能があります。
  3. 動画を検索することができます。
  4. 関連動画を表示することができます。
  5. ブックマークに登録したYouTubeの動画を視聴することができます。
  6. ブックマークへの登録機能があります。
  7. YouSukeの読み方は「ようすけ」です。

 YouTubeの動画は、YouTubeが提供している各国の動画を選択して観覧することができます。

 ブックマークは、「Delicious」, 「livedoor clip」, 「Yahoo ブックマーク」に対応しています。(はてなブックマークも対応していたのですが、ブックマークのリニューアル後から機能しなくなったので、現在はてなに要望中です。http://i.hatena.ne.jp/idea/22139) 

 また、日本語と英語の2つの言語に対応しています。

 お正月はお休みだったので、記事をたくさん書きましたが、これがお正月休みの最後の記事になります。

 今年もよろしくお願いします。

作者:perlcodesample

更新日:2009年1月4日 20時51分

このブログのホーム

[MySQL]MySQL ユーザの作成・パスワードの設定

ユーザ名とパスワード

 通常MySQLサーバに接続する場合は、ユーザ名とパスワードを指定して接続します。

mysql --user=kimoto --password=honyarara

あるいは、

mysql -u kimoto -phonyarara
||
(-pとパスワードの間は空けないことに注意)

 MySQLをインストールした直後であれば、
>||
mysql

とコマンドを打つだけで、MySQLサーバに接続することができます。ユーザ名を与えない場合は、ログインユーザ名を与えて、mysqlサーバに接続し、パスワードが初期状態では設定されていないためです。

 ログインユーザとMySQLのユーザはまったく別物です。MySQLにログインユーザとしてはログインできません。kimotoというログインユーザがいても、mysqlサーバにkimotoというユーザで接続できるわけではありません。

ユーザを作成する意味

 rootユーザにはすべての権限が与えられています。MySQLのデータベースを利用する人の多くは、テーブルにあるデータを操作したり取得したいだけです。また特定のユーザに特定のデータベースに対する操作を許可するということもできます。データベースを利用する人のためにユーザを作成して、適切な権限を与えることができます。

クライアントのホスト名

 MySQLのユーザ管理には、そのユーザがどこから接続したかということが含まれます。たとえば、ローカルからkimotoで接続した場合とリモート(たとえばデータベースサーバとアプリケーションサーバが別にある場合など)から接続した場合では、異なるユーザとして扱われます。

 ローカルで接続した場合のユーザ名は、

kimoto@localhost

のようになります。

 www.honyara.comというホスト名を持つサーバから接続した場合は、

kimoto@www.honyara.com

 というユーザ名になります。この辺がMySQLのユーザ管理で少しわかりにくい部分です。

 「ユーザ名」@「どこから接続しているか」が、本当のユーザ名であると覚えておきましょう。

rootユーザのパスワードの設定

 まずデフォルトではrootユーザにパスワードがありませんから、パスワードを設定します。rootというのは、本当のユーザ名ではありません。root@localhostというのが、本当のユーザ名ですので、これに対してパスワードを設定します。

mysql

で接続して、

set password for root@localhost = password('パスワード');

とします。後ろの方のpassword('パスワード')はpassword関数で、暗号化されたパスワードを作成しています。

select user,host,password from mysql.user;

とコマンドを打ってみましょう。アカウント情報を見ることができます。uesr(ユーザ名)がrootで、ホスト名が「localhost.localdomain」や「127.0.0.1」などのlocalhostと同じものを意味するユーザに対しても同じパスワード設定しておく必要があるようです。(理由はよくわかりません)

set password for root@127.0.0.1 = password('パスワード');
set password for root@localhost.localdomain = password('パスワード');

紛らわしい引数 --host

 mysqlコマンドで、

mysql --host=some.remote.com --user=kimoto --passwrod=pekepeke

とホスト名を指定することがありますが、このホスト名は接続先のホスト名の指定になります。MySQLはTCP/IP接続でリモートのMySQLサーバに接続することができ、リモート接続したい場合に、--hostでホスト名を指定します。

 上で解説したアカウント管理のホスト名はクライアント(接続元)のホスト名ですのこんがらがらないようにしましょう。

ユーザを追加する構文

 ユーザの追加のコマンドはわかりにくです。ユーザを追加するというと、adduser見たいなコマンドを思い浮かべるかもしれませんが違います。

 MySQLでユーザを作成するコマンドは、grant文です。grant文は、本来ならユーザに特定の権限を与えるための文です。

 けれども、ユーザが存在しない場合に、grant文でユーザを指定して権限を与えるとユーザが作成されます。MySQLでは、ユーザに権限を与えることでユーザが新規に作成されると考えてください。

一般的ユーザの権限

 一般的なユーザは、次のような権限を持つユーザだと考えてよいと思います。

権限説明
selectselect文を使用して、データを取得できる
insertinsert文を使用して、データを挿入できる
deletedelete文を使用して、データを削除できる
updateupdate文を使用して、データを更新できる
createcreate文を使用して、テーブルを作成できる
dropdrop文を使用して、テーブルを削除できる
alteralter文を使用して、テーブルの定義を変更できる
indexindex文を使用して、インデックスを作成できる

grant文で一般ユーザを作成する

 grant文は以下のようになります。だいぶややこしいです。

 権限のリストには、上で解説した権限をカンマで区切って並べます。データベース名は、権限を与える対象のデータベース名を指定します。

 ユーザ名は username@hostnameのようにホスト名を含んだユーザ名を指定します。

 パスワードには、password関数を使わないで、平文でパスワードを設定します。grant文では、自動的にpassword関数が適用されるので使用する必要がありません。

grant 権限のリスト on データベース名(orテーブル名 ) to ユーザ名(ホスト名含む) identified by 'パスワード';

設定例を書いておきます。*.*はすべてのデータベースのすべてのテーブルという意味になります。

grant select,insert,delete,update,create,drop,alter,index on *.* to mysqluser@localhost identified by 'honyarara';

ユーザ名と権限の確認

 ユーザに与えられた権限を確認するには以下のようにします。

show grants for ユーザ名(ホスト名を含む);

 出力結果の1行目の「grant usage on 〜」というのは、権限が何もないという意味です。2行目が実際に与えた権限になっています。

権限の削除

 権限の削除は、revoke文を使用します。使用方法は、grant文とほぼ同じです。to が fromに変わるだけです。パスワードは必要ありません。

 一般ユーザの権限を消してみます。

revoke select,insert,delete,update,create,drop,alter,index on *.* from mysqluser@localhost;

関連記事

MySQLのインストール

データベースの作成、テーブルの作成

作者:perlcodesample

更新日:2009年1月8日 11時58分

このブログのホーム

[MySQL]PerlからMySQLサーバへ接続する。

 PerlからMySQLサーバに接続する方法を解説します。MySQLのインストールデータベースやテーブルの作成方法は理解しておく必要があります。(Fedora7の環境で解説しています。)

データベースに接続するためのインターフェイス DBI

 まずDBIをインストールします。DBIというのはデータベースに接続したり、SQLをリクエストしたり、結果を取り出したりするための関数の集まりのことです。

 Perlに同名のモジュールがあるのでインストールします。

cpan DBI

MySQLと実際にやり取りを行うドライバ DBD

 DBIは関数を提供しますが、実際は内部でDBDがデータベースとやり取りを行っています。DBDには、MySQL用、PostgreSQL用、Oracle用,SQLite用などさまざまな種類があります。

 MySQL用のDBDをインストールします。

cpan DBD::mysql

DBIとDBDとデータベースサーバのやり取りのイメージ

 DBIというのは、どのデータベースに接続するときも変わりません。DBIはデータベースに依存しないように作られた接続のための関数の集まりだからです。

 DBDというのが、データベースと実際にデータをやり取りをします。

|-----|       |-------------|         |-------------|
|     |       |             |         |             |
|     |-------| DBD::mysql  |---------| MySQL       |
|     |       |             |         |             |
|     |       |-------------|         |-------------|
| DBI |              
|     |       |-------------|         |-------------|
|     |       |             |         |             |
|     |-------| DBD::Oracle |---------| Oracle      |
|     |       |             |         |             |
|-----|       |-------------|         |-------------|

作者:perlcodesample

更新日:2009年1月8日 3時3分

このブログのホーム

[自作アプリ]YouTubeプレイヤー YouSukeをリリースしました。

 YouTubeプレイヤー YouSukeをリリースしました。YouTubeを便利に見るためのWebアプリです。

YouTubeプレイヤー YouSuke

YouTubeプレイヤー YouSuke

f:id:perlcodesample:20090104211412p:image

YouSukeの機能

 YouSukeは以下の機能があります。

  1. YouTubeの人気の動画、ジャンル別の動画を画面遷移することなく視聴することができます。
  2. リピート機能、順次再生機能、ランダム再生機能があります。
  3. 動画を検索することができます。
  4. 関連動画を表示することができます。
  5. ブックマークに登録したYouTubeの動画を視聴することができます。
  6. ブックマークへの登録機能があります。
  7. YouSukeの読み方は「ようすけ」です。

 YouTubeの動画は、YouTubeが提供している各国の動画を選択して観覧することができます。

 ブックマークは、「Delicious」, 「livedoor clip」, 「Yahoo ブックマーク」に対応しています。(はてなブックマークも対応していたのですが、ブックマークのリニューアル後から機能しなくなったので、現在はてなに要望中です。http://i.hatena.ne.jp/idea/22139) 

 また、日本語と英語の2つの言語に対応しています。

 お正月はお休みだったので、記事をたくさん書きましたが、これがお正月休みの最後の記事になります。

 今年もよろしくお願いします。

作者:perlcodesample

更新日:2009年1月4日 11時51分

このブログのホーム