アットウィキロゴ

インストール

aptitude install mysql-server

database作成

create database test;

ユーザ作成

  • ユーザ名:test
  • パスワード:testpass で作成するには
    grant hoge1 on hoge2.* to 'test'@'%' identified by 'testpass' with grant option
    
    oracleと違って、
  • 権限:hoge1
  • 対象データベース:hoge2 まで指定する必要がある。さらにoracleと違うのは、今作成したユーザにログインできるホストまで構文内にある。
    それが 'test'@'%' 部分。'%'とすると、ホストは全て許可となる。
    ※勢いで '%'→'*' はダメ。私はハマりました。 http://dev.mysql.com/doc/refman/5.1/ja/adding-users.html

ユーザ確認

select user, host from mysql.user;

ドキュメント

http://dev.mysql.com/doc/refman/5.1/ja/mysql-command-options.html

権限

権限の種類は以下・・・だと思う。確定できる資料がなかったので、勘と経験でそう考えておく。

  • グローバル権限
    grant hoge on *.* to user
    
  • データベース権限
    grant hoge on dbname.* to user
    
  • テーブル権限
    grant hoge on dbname.tablename to user
    

    grantでonする対象の種類によって権限が種類分けされる模様。 さらに、ここで権限の反映タイミングをまとめると
  • グローバル権限:再接続(exit→接続して、完全にコネクションをつなぎ直す)
  • データベース権限:use database発行
  • テーブル権限:クエリ発行毎
    http://dev.mysql.com/doc/refman/5.1/ja/privilege-changes.html

mysqlで接続

mysql -D dbname -u user -p

CommunicationsException問題

鬼ハマったので備忘録。
MySQLサーバと異なる端末(別IP)から接続する場合、my.confの設定によっては接続できない。

getConnection failed: com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: 

** BEGIN NESTED EXCEPTION ** 

java.net.ConnectException
MESSAGE: Connection refused: connect

STACKTRACE:

java.net.ConnectException: Connection refused: connect
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.PlainSocketImpl.doConnect(Unknown Source)
	at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
	at java.net.PlainSocketImpl.connect(Unknown Source)
	at java.net.SocksSocketImpl.connect(Unknown Source)
	at java.net.Socket.connect(Unknown Source)
	at java.net.Socket.connect(Unknown Source)
  • 解決方法:my.confの bind-address = 127.0.0.1をコメントアウト。
    MySQLに接続できる端末は127.0.0.1(=localhost)だけ という設定。なのでMySQLと同じ端末(=同IP)はハマりなく接続可能。 参考:http://www.nilab.info/zurazure2/000318.html
最終更新:2009年05月06日 05:46