MySQLメモ
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。
