facebook twitter hatena line email

Mysql/sql文DDL

提供: 初心者エンジニアの簡易メモ
2015年5月20日 (水) 03:14時点における127.0.0.1 (トーク)による版 (ページの作成:「===rootパスワード設定=== mysqladmin -u root password '任意のパスワード' ===ユーザ権限追加=== -- 全dbに指定sql分を許可 GRANT USAGE ON *.*...」)

(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)
移動: 案内検索

rootパスワード設定

mysqladmin -u root password '任意のパスワード'

ユーザ権限追加

-- 全dbに指定sql分を許可
GRANT USAGE ON *.* TO user1@"localhost" IDENTIFIED BY 'パスワード';
GRANT CREATE,CREATE TEMPORARY TABLES,DELETE,DROP,EXECUTE,INSERT,LOCK TABLES,SELECT,UPDATE,INDEX,ALTER ON *.* TO user1@"localhost";
-- 個別dbのみ
GRANT USAGE ON db1.* TO user1@"localhost" IDENTIFIED BY 'パスワード';
GRANT CREATE,CREATE TEMPORARY TABLES,DELETE,DROP,EXECUTE,INSERT,LOCK TABLES,SELECT,UPDATE,INDEX,ALTER ON db1.* TO user1@"localhost";
-- 権限確認
SHOW GRANTS FOR user1@localhost;

権限削除

-- db指定権限削除
REVOKE SEKECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE ON db1.* FROM 'user1'@'localhost';
-- db全指定権限削除
REVOKE SEKECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE ON *.* FROM 'user1'@'localhost';
-- 全権限削除
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'user1'@'localhost';

ユーザ削除

DELETE FROM mysql.user WHERE user='ユーザ名';

mysqlに接続する方法

mysql -A -u [ユーザ名] -p
password入力のプロンプトが出るので、パスを入力
-Aを入力するとログイン時データベース一覧を取得しないので早くなる

my.cnf場所

var/lib/mysql/my.cnf

~から~のDBへ接続できるかテストする

mysql -u root -p -h 接続先IP

復元

mysql -uroot1 -ppass1 database1 < xxx.dump

ダンプ

mysqldump -uroot1 -ppass1 --databases database1 --default-character-set=binary > xxx.log

テーブルのみを指定する時は
--tables [table]を追加する

ロック中でも強制的にダンプするとき
--skip-lock-tables

データのみダンプ
-t

テーブル定義のみダンプ
-d

文字コードがeuc-jpのときはujisとする

create文のみバックアップ

$ mysqldump -uroot1 -ppass1 -d database1 > create1.dmp

再起動

# /etc/init.d/mysqld start
                     stop

または

# /etc/rd.d/init.d/mysqld start

gzipのバックアップとリストア

バックアップ

mysqldump --opt --quote-names --databases xxx | gzip -c1 > xxx.dump.gz

リストア

gzip -dc xxx.dump.gz | mysql -D xxx

utf8でdb作成

create database database1 default character set utf8;

my.cnfの以下設定

[mysqld]
default-character-set = utf8
skip-character-set-client-handshake
show variables like 'char%'でutf8確認

innodbのデッドロックを見つける

/var/lib/mysql/のinnodb.status.[dddd]の中を見る

puttyコンソールから文字コード変更

プッティ側の設定を変更することで可能 (ウィンドウ/変換)

puttyコンソールからデータ表示枠の拡大は

ウィンドウ/スクロールバックの数を増やすしかない

現在発行中のsql一覧

mysqladmin processlist

クライアントツールでutf8を表示

set names utf8;

テーブルと一緒にuniqueキー作成

CREATE TABLE sample(
id int(11) unsigned NOT NULL AUTO_INCREMENT,
unique1 varchar(10),
unique2 int(11),
PRIMARY KEY(id),
UNIQUE KEY `uniq_url` (`unique1`, `unique2`)
);

テーブルと一緒にindexキー作成

KEY `idx_custom_created` (`code`,`created`),

auto_increment確認&設定

--確認
SHOW TABLE STATUS;
--設定
ALTER TABLE table1 AUTO_INCREMENT=4;