MySQLメモ 
top

Dump/backup a MySQL database

Use mysqldump program.

% mysqldump myplaces_prod > ~/tmp/mysql_prod

You can use --all-databases to backup all the databases.
(11/11/2010) (07/01/2010)

ユーザー認証

MySQLでは、UNIXとは関係ない独立したID/パスワードを用いる。 デフォルトではunixユーザー@localhostが使われる。

mysql -u root

などとする。 Access denied for userと表示された場合は、パスワードを指定する必要があるかもしれない。この場合は、-pオプションを使う。

mysql -u root -p
Enter password:

ユーザーの管理はmysql.userを使って行われているので、

mysql -uroot mysql
mysql>select * from user;

などで設定が見られる。

MySQLユーザーのパスワード変更

最終的にmysql.userのpasswordカラムにパスワードのハッシュ値が書き込まれれば良いが、これは以下のコマンドで実現できる。

set password for username@localhost = PASSWORD('newpassword')

(2009/12/30)

カラムを追加・削除する

alter table TABLE add column COLUMN_NAME char(1) not null default 'y';
alter table TABLE drop column COLUMN_NAME;

addなのにremoveではない。変なの。

データをファイルに出力したい。

select * from item into OUTFILE "dump.dat"
select * from item order by indate into outfile "/tmp/dump2.dat"

または、SQL文として出力するには、mysqldumpコマンドが使える。

% mysqldump DBNAME TABLE1 TABLE2 ...

ファイルからデーターの読み込み

LOAD DATA INFILE 'file' INTO TABLE table_name

ファイルはタブ区切りにしておく。変更することもできるが、LOAD DATA文にパラメーター指定が必要になる。

コメント

MySQL依存でよければ、次のものが使える。

# comment
/* comment */
-- comment

リモートマシンからのアクセス制限

データベースmysqlのuserテーブルに適切なレコードを追加すればよい。

データベースの一覧が見たい。

show databases;  

テーブルの一覧が見たい。

show tables;  

テーブルの構造が見たい。

describe pet;  

テーブルを作成したい。

create table TABLENAME (FIELDNAME char(32), FIELD2 mediumint(9), primary key (FIELD2))

テーブルが存在しないときだけテーブルを作成するには、create table if not exists TABLENAME …とする。

テーブルを削除したい。

drop table TABLENAME

データベースを作成したい

特権ユーザーでログインし、次のSQL文を実行する。

create database TABLENAME

今使っているデータベースを見たい。

select database();  

その他メモ

LinuxにおけるMySQLの最大テーブルサイズは、2G。