* MySQL関連 [#f92d8f10] ** MySQL操作基本 [#o0124375] - [[過去のメモ:http://omoshiro-joho.com/tech-center/old_site/other/program/mysql.html]] -- こちらに、これまでまとめてきた内容が書いてあります。こちらのWikiには、上記ページで足りない内容を、書いていきます。 - [[MySQLクイックリファレンス:http://www.bitscope.co.jp/tep/MySQL/quickMySQL.htm]] -- 参考 *** データベースの確認 [#y1479469] 現在存在するデータベースの一覧を表示します。 mysql> show databases; *** データベースの削除 [#bf7dbbcd] データベース自体を削除する場合、下記の手順があります。いずれの方法でも良いです。 mysqlプロンプト内で実行する場合 mysql> DROP DATABASE データベース名 mysqladminを使う場合 $ mysqladmin -u root -p drop データベース名 ** 外部からアクセス [#nc094ecb] まず、mysqlサーバとTCP接続を確立できるようにします。netstat コマンドを使い、現在の状態を確認してください。 # netstat -a tcp 0 0 localhost:mysql *:* LISTEN 上記のように、"localhost" と表示する場合は、外部から接続することはできません。次のように、設定を修正します。 # vi /etc/mysql/my.cnf # Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. #bind-address = 127.0.0.1 # <-この行をコメントアウト 設定を変更したら、再起動します。 # mysqladmin -u root shutdown # mysqld_safe --user=mysql & 再び netstat -a を実行して、下記のように localhost が * に変わっていることを確認します。 # netstat -a tcp 0 0 *:mysql *:* LISTEN あとは、mysql内のアクセス制御の修正を行ないます。GRANT 文を使って、適切な権限を付与してください。 ** 文字化け対策 [#tacb652a] まず現象の説明です。サーバと別PCのクエリブラウザからマルチバイト文字を登録しようとすると、不正な文字列だと怒られます。一方サーバと同じPC上でCUIで登録すると、登録はできますが、先述のクエリブラウザで参照すると、化けて見えます。 原因は、もちろん文字コードの設定が違っているせいです。mysqlクライアントを立ち上げ、statusコマンドとshow variablesコマンドで、現在の設定を確認します。 mysql> status (略) Server characterset: latin1 Db characterset: latin1 Client characterset: latin1 Conn. characterset: latin1 (略) mysql> show variables like "char%"; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec) すると、character_set_system のみ utf8 で、残りは全て latin1 でした。なるほど、latin1 で揃っていたため、CUI から登録ができたのかもしれませんね。 これを、utf8 に直してやります。/etc/mysql/my.cnf の [mysqld] セクションに、下記の記述を追加します。 default-character-set=utf8 skip-character-set-client-handshake my.cnf の変更が終わったら、mysqld を再起動します。 # mysqladmin -u root shutdown # mysqld_safe --user=mysql & そして、status コマンドを実行します。 mysql> status (略) Server characterset: utf8 Db characterset: latin1 Client characterset: utf8 Conn. characterset: utf8 (略) これで OK ってあれ?そうです、既に作成したデータベースの文字コードは変更されません。削除をして、作り直します。 mysql> drop database database_name; mysql> create database database_name; 今度こそ、OK です。 mysql> status (略) Server characterset: utf8 Db characterset: utf8 Client characterset: utf8 Conn. characterset: utf8 (略) 上記の内容は、以下のサイトで、ユーモラスに説明されているので、ご参照ください。 - [[くまくまー:http://wota.jp/ac/?date=20061011]] *** mysqldump [#kfb9ec6a] mysqldumpコマンドを用いて、データベースのバックアップを取ることができます。作成するバックアップファイルは、sql文形式になります。そのため、互換性が非常に高いです。 全てのデータベースをバックアップ $ mysqldump -u root -x --all-databases > dump.sql 特定のデータベースをバックアップ $ mysqldump -u root データベース名 > dump.sql 全てのデータベースを復元 $ mysql -u root < dump.sql 特定のデータベースを復元 $ mysql -u root データベース名 < dump.sql ** Windows GUI クライアント [#zca24bfc] *** テーブルの修正 [#t51aa29d] MySQL Administrator の "カタログ" メニューから実行できる。 ** MySQL開発 [#f95348d3] *** エラー情報の取得 [#c8f91abe] mysql_errno(MYSQL* mysql) 関数を使うことで、直近に実行したコマンドのエラー状態を確認できます。各コマンドの戻り値自体は、エラー(0以外)、非エラー(0)の区別のみ行ないます。 ---- ** 履歴 [#p3c5488c] - 2007/08/17 新規作成 bokupi