アットウィキロゴ

MySQL



C:\ProgramData\MySQL\my.ini

mysql> show variables;
mysql> show variables like 'innodb_%';
mysql> show variables like '%mem%';
mysql> show variables like '%datadir%';
mysql> status;

SHOW WARNINGS;


ポート確認
mysql> show variables like 'port';


処理中プロセス
mysql> show processlist;

現在の接続しているスレッド数
mysql> show status like 'Threads_connected';

ロック確認

SHOW ENGINE INNODB STATUS;
select * from information_schema.INNODB_TRX \G;
select * from information_schema.INNODB_LOCKS \G;
select * from information_schema.INNODB_LOCK_WAITS\G;
SELECT @@GLOBAL.tx_isolation, @@tx_isolation;

大文字小文字の区別
show variables where variable_name='lower_case_table_names';
my.cnf
[mysqld]
lower_case_table_names = 0
で変更

DBサイズ
SELECT
   table_schema, sum(data_length+index_length) /1024 /1024 AS MB
FROM
   information_schema.tables
GROUP BY
   table_schema
ORDER BY
   sum(data_length+index_length) DESC;

テーブルサイズ
SELECT  
   table_name, engine, table_rows AS tbl_rows,
   avg_row_length AS rlen,  
   floor((data_length+index_length)/1024/1024) AS all_mb,
   floor((data_length)/1024/1024) AS data_mb,
   floor((index_length)/1024/1024) AS index_mb
FROM 
   information_schema.tables  
WHERE
   table_schema=database()  
ORDER BY
   (data_length+index_length) DESC;



# service mysqld restart
再起動後、ログが適用されたら書き込みがないうちにすぐに停止 
# service mysqld stop

my.cnf でログファイルサイズの書き換え
# vi /etc/my.cnf

ログファイルの移動(念のため削除ではなくバックアップ)
# mv /var/lib/mysql/ib_logfile* /(backupdir)/

mysqld 起動
# service mysqld start

ログファイルが指定したサイズで再作成されたことを確認
# ls -l /var/lib/mysql/ib_logfile* 

※ innodb_buffer_pool_size は[mysqld]の下に置く

set character set charset_name
 
-- 以下を実行したことと同様
set character_set_client  = charset_name;
set character_set_results = charset_name;
set collation_connection  = @@collation_database; -- collation_databaseと同じ値に設定する

ユーザー作成
ユーザー確認
SELECT host,user FROM mysql.user;
SELECT * FROM mysql.user \G;
ユーザー作成
GRANT ALL PRIVILEGES ON *.* TO sasuke@localhost IDENTIFIED BY 'aaa' WITH GRANT OPTION;
rootのパスワード
SET PASSWORD FOR root@localhost=PASSWORD('hoge');
ユーザー削除
DELETE FROM mysql.user WHERE user='sasuke';



show databases;
show tables;
SHOW CREATE TABLE tbl_name ;
show procedure status;
show function status;
show create procedure プロシージャ名;
select table_schema,table_name,table_type,table_rows,table_collation from information_schema.TABLES;
カラム確認
select TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME,COLUMN_DEFAULT,IS_NULLABLE,CHARACTER_SET_NAME
,COLUMN_TYPE,COLUMN_KEY,COLUMN_COMMENT from information_schema.COLUMNS;
ビュー確認
SELECT * FROM information_schema.views WHERE TABLE_NAME = 'ビュー名'

ストアド確認
SHOW CREATE FUNCTION test1 \G
SHOW CREATE PROCEDURE test1 \G

SELECT ROUTINE_SCHEMA, ROUTINE_NAME, ROUTINE_TYPE FROM information_schema.ROUTINES
   WHERE ROUTINE_TYPE = 'PROCEDURE';



mysql> CREATE DATABASE データベース名 CHARACTER SET utf8;
DB削除
mysql> DROP DATABASE test_db1;


テーブル作成・編集
テーブル削除
DROP TABLE IF EXISTS `testdb`.`createtest`;

テーブル追加
CREATE TABLE  `testdb`.`createtest` (
`userid` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`password` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`email` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
PRIMARY KEY (`userid`),
KEY `username` (`username`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

テーブル編集
ALTER TABLE tbl_name ADD COLUMN col_name INT(11) DEFAULT 0 NOT NULL AFTER other_col_name;
ALTER TABLE tbl_name CHANGE COLUMN old_col new_col INT(11) NOT NULL AUTO_INCREMENT;
ALTER TABLE tbl_name MODIFY COLUMN col_name VARCHAR(128) NOT NULL;
ALTER TABLE tbl_name DROP COLUMN col_name;
alter table 対象テーブル add unique (対象フィールド);


mysqldump -u napzak -p foo_db > db_backup_`date +%Y%m%d-%H%M%S`.sql

ストアドも
mysqldump -R -u napzak -p foo_db > db_backup.sql

データのみダンプ
mysqldump -u root -p DB名 --skip-dump-date --no-create-info --default-character-set=binary > onlyData.sql

スキーマとViewのみダンプ
mysqldump -u root -p DB名 --no-data --skip-dump-date > onlySchemaWithView.sql

ストアドのみダンプ
mysqldump -u root -p DB名 --skip-dump-date --no-create-info --no-data --routines > onlyFunctions.sql

テーブル単位
mysqldump -u root -p database_name table_name1 table_name2 > dump.sql
 オプションの説明
 --skip-dump-date ダンプした日を出力
 --no-create-info create table文を出力しない
 --no-data データを出力しない
 --routines ストアド情報を出力

復元
shell> mysql -u napzak -p --default-character-set=utf8 foo_db < dump.sql
または
mysql> source dump.sql


mysql -uroot -p -e "SELECT * FROM table_name" db_name > /tmp/mysql.tsv

SELECT * FROM test INTO OUTFILE '/var/lib/mysql-files/test.dmp';
 --secure-file-priv の権限が必要

SET GLOBAL general_log='on'
SET GLOBAL log_output='table'
なんかやる
SELECT * FROM mysql.general_log
SET GLOBAL general_log='off'



最終更新:2019年07月02日 13:41