ユーザ用ツール

サイト用ツール


サイドバー

このページの翻訳:



最近の更新



Tag Cloud

02_freebsd:04_database:01_mysql:mysqlコマンド

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役立つコマンド

リフレッシュ

ユーザのパスワード変更した後などは、リフレッシュしないと適応されてない可能性があります。

  mysql> FLUSH PRIVILEGES;
  Query OK, 0 rows affected (0.05 sec)
02_freebsd/04_database/01_mysql/mysqlコマンド.txt · 最終更新: 2024/08/27 21:33 by matsui