現在存在するデータベースの一覧を表示します。
mysql> show databases;
データベース自体を削除する場合、下記の手順があります。いずれの方法でも良いです。
mysqlプロンプト内で実行する場合
mysql> DROP DATABASE データベース名
mysqladminを使う場合
$ mysqladmin -u root -p drop データベース名
まず、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 文を使って、適切な権限を付与してください。
まず現象の説明です。サーバと別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 (略)
上記の内容は、以下のサイトで、ユーモラスに説明されているので、ご参照ください。
mysqldumpコマンドを用いて、データベースのバックアップを取ることができます。作成するバックアップファイルは、sql文形式になります。そのため、互換性が非常に高いです。
全てのデータベースをバックアップ
$ mysqldump -u root -x --all-databases > dump.sql
特定のデータベースをバックアップ
$ mysqldump -u root データベース名 > dump.sql
特定のデータベースの特定のテーブルをバックアップ
$ mysqldump -u root データベース名 テーブル1 テーブル2 > dump.sql
特定のデータベースのテーブル構造のみをバックアップ
$ mysqldump -u root -d データベース名 > dump.sql
特定のデータベースのレコードのみをバックアップ
$ mysqldump -u root -t データベース名 > dump.sql
全てのデータベースを復元
$ mysql -u root < dump.sql
特定のデータベースを復元
$ mysql -u root データベース名 < dump.sql
MySQL Administrator の "カタログ" メニューから実行できる。
mysql_errno(MYSQL* mysql) 関数を使うことで、直近に実行したコマンドのエラー状態を確認できます。各コマンドの戻り値自体は、エラー(0以外)、非エラー(0)の区別のみ行ないます。