MySQL運用手順
データベースへの接続
% /opt/mysql/mysql/bin/mysql -uユーザ名 -pパスワード -hホスト名 -Pポート番号 データベース名
% /opt/mysql/mysql/bin/mysql -uユーザ名 -pパスワード -Sソケットファイル名 データベース名
パラメータの確認
SHOW VARIABLES;
SHOW VARIABLES LIKE 'log%';
パラメータの設定
SET パラメータ名 = 値;
(ex. SET global log_bin_trust_function_creators = 1;)
データベースの作成
CREATE DATABASE データベース名 [CHARACTER SET 文字セット];
(ex. create database testdb;)
データベースの確認
SHOW DATABASES;
使用するデータベースの選択
USE データベース名;
ユーザの作成
GRANT ALL PRIVILEGES ON データベース名.権限名 TO ユーザ名@ホスト名 IDENTIFIED BY 'パスワード';
ユーザの確認(グローバル権限)
SELECT * from user;
ユーザの確認(データベース権限)
SELECT * from db;
ユーザの削除
DROP USER ユーザ名@ホスト名
テーブルの作成
CREATE TABLE テーブル名(行名 行型,…)ENGINE=エンジン名;
テーブルの確認
SHOW TABLES;
テーブル定義の確認
SHOW CREATE TABLE テーブル名;
テーブルの削除
DROP TABLE テーブル名;
プロシージャの作成
CREATE PROCEDURE プロシージャ名(引数名 引数型) 処理;
プロシージャの削除
DROP PROCEDURE プロシージャ名;
ファンクションの作成
CREATE FUNCTION ファンクション名(引数名 引数型) RETURNS 戻値型 RETURN 戻値;
(ex. CREATE FUNCTION test_func01(n int) RETURNS int RETURN n*100;)
注意:log_bin_trust_function_creators=0の場合(デフォルト)
SUPER権限と、DETERMINISTIC/NO SQL/READS SQL DATAを指定する必要がある
→log_bin_trust_function_creators=1にすればOK
補足:DETERMINISTIC:同じ引数に対して同じ値を返すこと
NO SQL:SQLが一切含まれていないこと
READS SQL DATA:SELECTなど読み取り用のSQLしか含まれていないこと
ファンクションの削除
DROP FUNCTION ファンクション名;
InnoDBの状況確認
SHOW INNODB STATUS;
mysql -u{user} -p{pass} -h{hostname} -P{port} --execute="SHOW INNODB STATUS\G" mysql
http://www.mysqlperformanceblog.com/2006/07/17/show-innodb-status-walk-through/
http://dev.mysql.com/doc/refman/5.1/ja/innodb-monitor.html
InnoDBが内部で保持している統計情報やステータスを表示。
統計情報は1分ごと、またはコマンドを実行するたびにクリアされる。
出力の先頭を見ると何秒間の統計なのかが分かる。
SEMAPHORES:ロック情報
LATEST DETECTED DEADLOCK:デッドロック情報。完全な詳細は表示しないが原因の推定が可能。
TRANSACTIONS:実行中のトランザクション情報。
FILE I/O:I/O状況。
LOG:InnoDBログ情報。チェックポイントなど。
BUFFER POOL AND MEMORY:バッファプール使用状況
ROW OPERATIONS:行挿入、更新、削除、読み込みなどの統計情報が得られる。
グローバルステータス変数の確認
SHOW GLOBAL STATUS;
http://dev.mysql.com/doc/refman/5.1/ja/server-status-variables.html
プロセスの一覧表示
SHOW PROCESSLIST;
プロセスの強制停止
% mysqladmin kill プロセスID -u root -p
クエリが失敗した時のエラーコードを表示
SHOW WARNINGS;
rootのパスワードを忘れた場合
my.cnfにskip-grant-tablesをつけて再起動