====== MySQLコマンド ====== ===== ①ユーザ関係 ===== ==== ユーザの確認 ==== mysql> select host,user,Grant_priv from mysql.user; +---------------------+-------------+------------------+------------+ | host | user | password | Grant_priv | +---------------------+-------------+------------------+------------+ | localhost | root | 284e59d71f64e3ec | Y | | cloud.flateight.com | root | | Y | | 127.0.0.1 | root | | Y | | localhost | | | N | | cloud.flateight.com | | | N | | localhost | postfix | 3ec7dddf23d89d39 | N | | localhost | matsukaze | 7f9f27246ddab376 | N | | localhost | stats | 3cf31278467575ed | N | | localhost | nagata | 423da20727393e52 | N | | localhost | cacti | 6d43317a3705f19e | N | | localhost | iline8 | 6e4d585d01239c27 | N | | localhost | eccube_user | 284e59d71f64e3ec | N | +---------------------+-------------+------------------+------------+ 12 rows in set (0.00 sec) ==== 権限の確認 ==== mysql> SHOW GRANTS FOR testdb_user@localhost; +----------------------------------------------------------------------------------------------------+ | Grants for testdb_user@localhost | +----------------------------------------------------------------------------------------------------+ | GRANT ALL PRIVILEGES ON *.* TO 'testdb_user'@'localhost' IDENTIFIED BY PASSWORD '370f8eb673c9467f' | +----------------------------------------------------------------------------------------------------+ === 権限の追加 === グローバルレベル GRANT ALL ON *.* TO user; GRANT SELECT, INSERT ON *.* TO user; データベースレベル GRANT ALL ON db_name.* TO user; GRANT SELECT, INSERT ON mydb.* TO user; === 権限の削除 === mysql> revoke all on *.* from 'testdb_user'@'localhost'; === DBに設定されたユーザの確認 === mysql> select host, db, user from mysql.db; +-------------+-----------+-----------+ | host | db | user | +-------------+-----------+-----------+ | % | test | | | % | test\_% | | | 172.16.0.3 | mc_portal | mc_portal | | 172.20.0.35 | mc_diem | mc_portal | +-------------+-----------+-----------+ 4 rows in set (0.00 sec) ==== ユーザ作成 ==== CREATE USER 'matsui'@'localhost' IDENTIFIED BY 'pass'; ==== ユーザに権限を付ける ==== testデータベースに対して全ての権限を持ったmatsuiユーザ作成、パスワードはpass mysql> grant all privileges on test.* to 'matsui'@'localhost' identified by 'pass'; === ユーザに権限を付ける(ユーザ作成権限付き) === ※CREATE USER はユーザーの作成に使用されます。 mysql> grant all privileges on test.* to matsui@localhost identified by 'pass' with grant option; === ユーザ追加(read only) === mysql> GRANT SELECT ON *.* TO 'readonly_user'@'localhost' IDENTIFIED BY 'pass'; ==== ユーザ削除 ==== matuiユーザを削除 mysql> delete from mysql.user where user='matsui' and host='localhost'; こっちの方が簡単 mysql> DROP USER 'matsui'@'localhost'; ==== ユーザ名&ホストの変更 ==== mysql> RENAME USER 'FROM_USER'@'192.168.0.%' TO 'TO_USER'@'192.168.1.%'; ===== ②データベース関連 ===== ==== データベース作成 ==== mysql> create database test; ==== データベース削除 ==== mysql> create table test; ==== データベースのコピー ==== ダンプしたものを、コピーしたいDBにパイプで繋げてあげる。 # mysqldump sourceDB | mysql destinationDB ==== データベース名の変更 ==== ※データベース名の変更はできないので、create databaseして、データベースをコピーする事で対応する。 mysql> create database 新データベース名 character set utf8; # mysqldump 旧データベース名 | mysql 新データベース名 ===== ③テーブル関連 ===== ==== テーブル作成 ==== CREATE TABLE hoge_tbl ( id int PRIMARY KEY AUTO_INCREMENT, name text ); ==== テーブルのコピー ==== /* hogeテーブルのスキーマをコピーしてテーブル作成 */ > CREATE TABLE hoge_tbl LIKE hoge; /* hogeテーブルのデータをINSERT */ > INSERT INTO hoge_tbl SELECT * FROM hoge; ==== テーブル名変更 ==== ALTER TABLE tbl_name RENAME [TO] new_tbl_name; ==== テーブル情報を表示(DESCRIBE) ==== DESCRIBE データベース名.テーブル名 ; または DESC データベース名.テーブル名 ; -例 mysql> DESCRIBE mysql.user; +-----------------------+-----------------------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------------------+-----------------------------------+------+-----+---------+-------+ | Host | varchar(60) | NO | PRI | | | | User | varchar(16) | NO | PRI | | | | Password | varchar(16) | NO | | | | | Select_priv | enum('N','Y') | NO | | N | | | Insert_priv | enum('N','Y') | NO | | N | | | Update_priv | enum('N','Y') | NO | | N | | | Delete_priv | enum('N','Y') | NO | | N | | | Create_priv | enum('N','Y') | NO | | N | | | Drop_priv | enum('N','Y') | NO | | N | | | Reload_priv | enum('N','Y') | NO | | N | | | Shutdown_priv | enum('N','Y') | NO | | N | | | Process_priv | enum('N','Y') | NO | | N | | | File_priv | enum('N','Y') | NO | | N | | | Grant_priv | enum('N','Y') | NO | | N | | | References_priv | enum('N','Y') | NO | | N | | | Index_priv | enum('N','Y') | NO | | N | | | Alter_priv | enum('N','Y') | NO | | N | | | Show_db_priv | enum('N','Y') | NO | | N | | | Super_priv | enum('N','Y') | NO | | N | | | Create_tmp_table_priv | enum('N','Y') | NO | | N | | | Lock_tables_priv | enum('N','Y') | NO | | N | | | Execute_priv | enum('N','Y') | NO | | N | | | Repl_slave_priv | enum('N','Y') | NO | | N | | | Repl_client_priv | enum('N','Y') | NO | | N | | | ssl_type | enum('','ANY','X509','SPECIFIED') | NO | | | | | ssl_cipher | blob | NO | | NULL | | | x509_issuer | blob | NO | | NULL | | | x509_subject | blob | NO | | NULL | | | max_questions | int(11) unsigned | NO | | 0 | | | max_updates | int(11) unsigned | NO | | 0 | | | max_connections | int(11) unsigned | NO | | 0 | | +-----------------------+-----------------------------------+------+-----+---------+-------+ 31 rows in set (0.01 sec) ==== カラムのデータ型を変更する ==== mysql> alter table テーブル名 modify カラム名 データ型; 例: test_tbl の type カラムをchar(6)へ変更 mysql> desc test_tbl; +-------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | type | text | YES | | NULL | | +-------+---------+------+-----+---------+-------+ 2 rows in set (0.00 sec) mysql> alter table test_tbl modify type char(6); mysql> desc test_tbl; +-------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | type | char(6) | YES | | NULL | | +-------+---------+------+-----+---------+-------+ 2 rows in set (0.00 sec) ==== カラム追加 ==== ALTER TABLE テーブル名 ADD 追加するカラム名 型 AFTER カラム名; ALTER TABLE テーブル名 ADD 追加するカラム名 型 FIRST; ==== カラム名変更 ==== ALTER TABLE テーブル名 CHANGE COLUMN 旧カラム名 新カラム名 新カラム型; ==== インデックスを追加 ==== ALTER TABLE テーブル名 ADD INDEX (カラム名); ===== ④文字コード関係 ===== ==== 現在の環境確認 ==== SHOW VARIABLES LIKE 'character%'; ==== データベースの文字コード設定を調べる ==== mysql> show create database データベース名; ==== 文字コードを指定してDB作成 ==== CREATE DATABASE hoge CHARACTER SET SJIS; ==== テーブルの文字コード設定を調べる ==== mysql> show create table テーブル名 \G ==== 文字コードを変更する。 ==== SET NAMES 'sjis'; 使える文字コード sjis ujis utf8 ==== 文字コードなど、ステータス確認 ==== mysql> STATUS -------------- mysql Ver 14.14 Distrib 5.1.28-rc, for portbld-freebsd6.3 (i386) using 5.2 Connection id: 104553 Current database: syslog Current user: root@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 5.1.28-rc-log FreeBSD port: mysql-server-5.1.28 Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: ujis Db characterset: ujis Client characterset: ujis Conn. characterset: ujis UNIX socket: /tmp/mysql.sock Uptime: 15 days 11 hours 10 min 32 sec Threads: 2 Questions: 2293516 Slow queries: 0 Opens: 14189 Flush tables: 22 Open tables: 64 Queries per second avg: 1.716 -------------- ===== ⑤照会順序 ===== ==== データベースの照会順序確認 ==== SELECT * from information_schema.schemata WHERE schema_name like [DB_NAME]; ==== データベースの照会順序変更 ==== ALTER DATABASE [DB_NAME] CHARACTER SET [CHARACTER_NAME] COLLATE [COLLATION_NAME]; ※CHARACTER_NAMEだけを指定した場合の照会順序は、「show charset」で見た「Default collation」がセットされます。 ==== テーブルの照会順序確認 ==== SHOW TABLE STATUS FROM [DB_NAME]; ==== テーブルの照会順序変更 ==== ALTER TABLE `テーブル名` COLLATE utf8_unicode_ci ==== カラムの照会順序確認 ==== SHOW FULL COLUMNS FROM [TABLE_NAME]; ==== カラムの照会順序変更 ==== ALTER TABLE [TABLE_NAME] MODIFY COLUMN [COLUMN_NAME] text COLLATE `utf8_unicode_ci`; ===== ⑥INSERT ===== INSERT INTO hoge_tbl VALUES(1,'aaaa'); INSERT INTO hoge_tbl(id,name) VALUES(1,'aaaa'); INSERT INTO hoge_tbl(name) VALUES('aaaa'); ===== ⑦View ===== ==== 0.ビューの一覧 ==== SELECT table_name FROM information_schema.tables WHERE table_type = 'VIEW'; ==== 1.ビューの作成方法 ==== create view dbname.hogetable as ( select * from footable ) ==== 2.ビューの確認 ==== show create view dbname.hogetable ==== 3.ビューの削除 ==== drop view dbname.hogetable ==== 4.ビューの更新 ==== alter view dbname.hogetable as ( select * from footable ) ===== MySQL役立つコマンド ===== [[http://qiita.com/sawarame/items/aa99408ce24930ad7def]] ====== リフレッシュ ====== ユーザのパスワード変更した後などは、リフレッシュしないと適応されてない可能性があります。 mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.05 sec) {{tag>MySQL}}