MySQL

Share/Save

MySQL のバックアップ手法いろいろ

mysqldump
mysqldump コマンドを使うだけなのだが、バックアップ専用のアカウントをつくるたびに、どの権限が必要だったろうかと迷う。

1. サーバ側で dump 用ユーザを作成する。ここではユーザ名を backup とする。SELECT, SHOW VIEW, LOCK TABLES, RELOAD 権限が必要。ローカルサーバで mysqldump する場合は、さらに FILE 権限も必要。

mysql> grant select, show view, lock tables, reload on *.* to backup@192.168.0.111 identified by '<パスワード>';
 
SELECT
 バックアップ対象テーブルを読み取るのに必要。
SHOW VIEW
  VIEWをダンプするのに必要。
LOCK TABLES
 整合性を持った状態でダンプするのに必要。mysqldump 実行時に --skip-lock-tables を付ける場合は不要。
RELOAD
 mysqldump が FLUSH TABLES を実行するために必要。

in

MySQL のストアドプロシージャで日付ディメンションテーブルをつくる

--
-- 日付ディメンションテーブル
--
drop table if exists dates;
 
create table dates (
 id    integer primary key auto_increment,
 date  date,
 year  integer,
 month integer,
 day   integer,
 week  integer,
 index date(date),
 index year(year),
 index month(month),
 index day(day),
 index week(day)
);

drop procedure if exists update_dates_table;
 
delimiter //
create procedure update_dates_table()
begin
 declare currentdate date default '2008-12-01';
 truncate dates;
 while currentdate &lt;= curdate() do

in

MySQL の NO_AUTO_CREATE_USER

Windows版の MySQL で、GRANT で新ユーザを作成しようとしたら、

mysql> grant all on inquiry.* to 'ODBC'@'localhost';
ERROR 1133 (42000): Can't find any matching row in the user table

と言われた。 Windows版では、my.ini の sql_mode に NO_AUTO_CREATE_USER が指定されていて、パスワード無しのユーザを作成できない。そんな時は、NO_AUTO_CREATE_USER をはずすか、パスワード付きでユーザを作ればいい。

NO_AUTO_CREATE_USER をはずす
mysql> set sql_mode="";
Query OK, 0 rows affected (0.00 sec)
 
mysql> grant all on inquiry.* to 'ODBC'@'localhost';
Query OK, 0 rows affected (0.00 sec)

パスワード付きでユーザを作成する
 
in
Syndicate content