&tag(MySQL/管理); *目次 [#c2811613] #contents *参考情報 [#seea8701] -[[MySQL]] *ユーザー操作 [#rf61dc5d] **rootパスワードの設定 [#ee7826fb] -rootのパスワードが設定されていない場合必ず設定しておく。 ***mysqladminコマンドで設定 [#k6ed0609] mysqladminコマンドを使って設定する方法。 mysqladmin -u root password <new_password> ***mysqlコマンドで設定 [#v582321e] mysqlテーブルを操作してパスワードを設定する方法。 #pre{{ $ mysql -u root -p; mysql> use mysql; mysql> set password for root@localhost=password('任意のpasswd'); }} **ユーザー登録 [#faf9e91b] -データベースの作成も可能なユーザーを登録するには、以下のように実行する。 -ON *.*のところの最初がテーブル名で、二つ目がデータベース名。 #pre{{ $ mysql -u root -p mysql> GRANT ALL PRIVILEGES ON *.* TO ユーザ名@localhost IDENTIFIED BY 'パスワード' }} -ホスト名のところはワイルドカード'%'が指定できる。 mysql> GRANT ALL PRIVILEGES ON *.* TO ユーザ名@'%' IDENTIFIED BY 'パスワード' -ホスト名の部分を省略しても同じ事になるらしい。 mysql> GRANT ALL PRIVILEGES ON *.* TO ユーザ名 IDENTIFIED BY 'パスワード' -確認はrootでuserテーブルを見れば良い。 #pre{{ $ mysql -uroot -p mysql> use mysql; mysql> select * from user; }} ***localhostから接続しようとしてもAccess Denied [#d02e1397] -Unix系のマシンでローカルホストから接続するときにホスト名のワイルドカード'%'がきかないことがある。その理由は[[MySQL :: MySQL 4.1 リファレンスマニュアル :: 4.3.12 Access denied エラーの原因:http://dev.mysql.com/doc/refman/4.1/ja/access-denied.html]]にある通りか? #pre{{ Access denied の原因がわからない場合は、user テーブルから Host 値にワイルドカードが含まれているエントリ(‘%’ または ‘_’ を含むエントリ)をすべて削除する。 よくある間違いは、Host='%' および User='some user' の新規エントリを挿入し、これで、同一マシンから接続する際には localhost を指定できると考えていることである。これがうまくいかない理由は、デフォルト権限として、Host='localhost' および User='' のエントリが含まれているためである。Host 値が 'localhost' の場合、'%' よりも具体的なため、localhost からの接続時に新しいエントリよりもデフォルト権限が優先される。正しい指定の方法は、Host='localhost' および User='some_user' の 2 つ目のエントリを挿入するか、Host='localhost' および User='' のエントリを削除することである。 }} -'%'とlocalhost二つを指定してgrantすればとりあえず良いっぽい。[[Allowing wildcard (%) access on MySQL db, getting error "access denied for '<user>'@'localhost'" - Server Fault:http://serverfault.com/questions/122472/allowing-wildcard-access-on-mysql-db-getting-error-access-denied-for-use]]なども参照のこと。 *データベース操作 [#y1bae0cc] **データベースの生成文を表示する [#l161761a] -show create database <データベース名> を使う。DEFAULT CHARACTER SETや、COLLATEを確認できる。 show create database testdb *テーブル操作 [#c88880b1] ** テーブルの生成文を表示する [#x7a007c3] -データベースに接続してコマンド実行 show create table xxxxx; -mysqldumpを使って一気に表示。テーブル名を省略すればデータベース内の全てのテーブルが対象になる。 mysqldump -d <データベース名> (<テーブル名>) *Tips [#xb2f6a35] **アクセスするホストを制限したい [#yd88e7a5] -my.cnfなどでは指定できないのでgrantでアクセスできるホストを指定する。