MySQLのチップス - 管理

投稿日 2015/02/09

[Home] [Index] 


ユーザを作る(削除する)には

新しいユーザを作るには CREATE USER 文 または/および GRANT 文を使用します。※ root 以外の場合、CREATE USER privilege(s) 権限が必要です。

mysql> CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%';

GRANT 文はユーザの権限を設定するものですが、直接、ユーザを作ることもできます。

mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%' IDENTIFIED BY 'some_pass';

この例ではユーザの権限を ALL PRIVILEGES にしていますが、これはすべての権限を委譲することになるので、通常はあまり使いません。

ユーザを削除するには、DROP USER 文を使用します。

mysql> DROP USER 'monty';

ユーザの権限を変更するには

ユーザの権限を変更するには、GRANT 文を使用します。下の例は、ユーザ test_user に test データベースのすべてのテーブルに対して SELECT 文を実行できる権限を与えています。IDENTIFY BY 句があるので、このユーザは新しく作られます。

mysql> GRANT SELECT ON test.* TO test_user IDENTIFIED BY 'some_pass';

権限 UPDATE, INSERT を追加するには下のようにします。

mysql> GRANT SELECT,UPDATE,INSERT ON test.* TO test_user;

権限には以下のような物があります。


パスワードを変更するには

パスワードを変更するには、SET PASSWORD 文を使います。

mysql> SET PASSWORD = PASSWORD('some_pass');

root が他のユーザのパスワードを変更するには次のようにユーザを指定します。

mysql> SET PASSWORD FOR test_user = PASSWORD('some_pass');

データベースを作る(削除する)には

データベースを作るには、CREATE DATABASE 文を使います。CHARACTER SET を指定しないとラテン文字になります。どんなコードがあるか知るには、"SHOW CHARACTER SET" 文を使用します。

mysql> CREATE DATABASE test2 CHARACTER SET = utf8;

データベースを削除するには、DROP DATABASE 文を使います。

mysql> DROP DATABASE test2;

テーブルを作る(削除する)には

テーブルを作るには、CREATE TABLE 文を使います。

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
  (create_definition,...)
  [table_options]
  [partition_options]

CREATE TABLE customers (
 id integer not null primary key auto_increment,
 name varchar(50) not null,
 address varchar(100) not null,
 zipcode varchar(20) not null,
 telephone varchar(20) not null,
 email varchar(50) not null);

作成の定義

create definition ですが、以下のように定義されます。

col_name column_definition
| [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...)
   [index_option] ...
| {INDEX|KEY} [index_name] [index_type] (index_col_name,...)
   [index_option] ...
| [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY]
   [index_name] [index_type] (index_col_name,...)
   [index_option] ...
| {FULLTEXT|SPATIAL} [INDEX|KEY] [index_name] (index_col_name,...)
   [index_option] ...
| [CONSTRAINT [symbol]] FOREIGN KEY
   [index_name] (index_col_name,...) reference_definition
| CHECK (expr)

column_definition は次のように定義されます。

data_type [NOT NULL | NULL] [DEFAULT default_value]
 [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]
 [COMMENT 'string']
 [COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}]
 [STORAGE {DISK|MEMORY|DEFAULT}]
 [reference_definition]

データの型

BIT[(length)]
| TINYINT[(length)] [UNSIGNED] [ZEROFILL]
| SMALLINT[(length)] [UNSIGNED] [ZEROFILL]
| MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL]
| INT[(length)] [UNSIGNED] [ZEROFILL]
| INTEGER[(length)] [UNSIGNED] [ZEROFILL]
| BIGINT[(length)] [UNSIGNED] [ZEROFILL]
| REAL[(length,decimals)] [UNSIGNED] [ZEROFILL]
| DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL]
| FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL]
| DECIMAL[(length[,decimals])] [UNSIGNED] [ZEROFILL]
| NUMERIC[(length[,decimals])] [UNSIGNED] [ZEROFILL]
| DATE
| TIME
| TIMESTAMP
| DATETIME
| YEAR
| CHAR[(length)]
   [CHARACTER SET charset_name] [COLLATE collation_name]
| VARCHAR(length)
   [CHARACTER SET charset_name] [COLLATE collation_name]
| BINARY[(length)]
| VARBINARY(length)
| TINYBLOB
| BLOB
| MEDIUMBLOB
| LONGBLOB
| TINYTEXT [BINARY]
   [CHARACTER SET charset_name] [COLLATE collation_name]
| TEXT [BINARY]
   [CHARACTER SET charset_name] [COLLATE collation_name]
| MEDIUMTEXT [BINARY]
   [CHARACTER SET charset_name] [COLLATE collation_name]
| LONGTEXT [BINARY]
   [CHARACTER SET charset_name] [COLLATE collation_name]
| ENUM(value1,value2,value3,...)
   [CHARACTER SET charset_name] [COLLATE collation_name]
| SET(value1,value2,value3,...)
   [CHARACTER SET charset_name] [COLLATE collation_name]
| spatial_type

テーブルを変更するには

テーブルの構造を変更するには、ALTER TABLE 文を使います。テーブル名の変更は、RENAME TABLE 文を使います。テーブルを削除するには、DROP TABLE 文を使います。

カラムの追加

カラムの追加は ADD 句を使います。

ALTER TABLE customers ADD flag TINYINT NOT NULL DEFAULT 0 AFTER id;

カラムの変更

カラムの変更は CHANGE 句を使います。

ALTER TABLE customers CHANGE telephone tel CHAR(20);

カラムの削除

カラムの削除は DROP 句を使います。

ALTER TABLE customers DROP email;

テーブル名の変更

テーブル名を変更するには、RENAME TABLE 文を使います。

mysql< RENAME TABLE customers TO cust;

テーブルの削除

テーブルを削除するには、DROP TABLE 文を使います。

DROP TABLE customers;

ビューを作る(削除する)には

ビューを作るには CREATE VIEW 文を使います。削除するには、DROP VIEW 文を使います。既存のビューを変更するには、CREATE OR REPLACE 文を使います。

mysql> CREATE VIEW vw_utf8collations AS select collation_name from information_schema.collations where collation_name like '%utf8%';
mysql> DROP VIEW vw_utf8collations;

インデックスを作る(削除する)には

インデックスを作る(削除する)には、CREATE INDEX 文を使います。削除するには、DROP INDEX 文を使います。

CREATE INDEX idx_name ON customers(name);
DROP INDEX idx_name  ON customers(name);

ストアドを作る(削除する)には

ストアドを作るには、CREATE PROCEDURE 文またはCREATE FUNCTION 文を使います。逆に削除するには、DROP PROCEDURE 文またはDROP FUNCTION 文を使います。修正するには、ALTER PROCEDURE 文または ALTER FUNCTION 文 (※ソースの修正はできません) を使います。

ストアドプロシージャの作成例

DELIMITER //
CREATE PROCEDURE sp_test1(OUT param1 INTEGER)
BEGIN
 SELECT COUNT(*) INTO param1 FROM test1;
END //
DELIMITER ;

使用例

mysql> CALL sp_test1(@cnt);
mysql> select @cnt;
+------+
| @cnt |
+------+
|   12 |
+------+
1 row in set (0.00 sec)

ストアドファンクションの作成例

DELIMITER //
CREATE FUNCTION sf_test1() RETURNS INTEGER
BEGIN
 DECLARE cnt INTEGER;
 SELECT COUNT(*) INTO cnt FROM test1;
 RETURN cnt;
END //
DELIMITER ;

使用例

mysql> select sf_test1();
+------------+
| sf_test1() |
+------------+
|         12 |
+------------+
1 row in set (0.00 sec)

ストアドプロシージャの削除例

mysql> DROP PROCEDURE sp_test1;
Query OK, 0 rows affected (0.00 sec)

ストアドプロシージャの修正例 (※ この文はソースを変更するためのものではありません。特性のみ変更可能です。)

ソースの修正を直接行う文はない?ようです。一度ドロップしてから再度作成します。

mysql<    ALTER PROCEDURE sp_test1 COMMENT 'ver 1.1';
Query OK, 0 rows affected (0.00 sec)

ストアドプロシージャの確認は SHOW PROCEDURE STATUS 文で行います。

mysql> SHOW PROCEDURE STATUS\G;
*************************** 1. row ***************************
                 Db: test
Name: sp_test1
               Type: PROCEDURE
Definer: root@localhost
           Modified: 2015-02-17 04:31:51
            Created: 2015-02-17 04:31:51
Security_type: DEFINER
            Comment:
character_set_client: utf8
collation_connection: utf8_general_ci
Database Collation: utf8_general_ci

ストアドプロシージャのソースの確認は SHOW CREATE PROCEDURE プロシージャ名; で行うことができます。

mysql> show create procedure sp_test1\G;
*************************** 1. row ***************************
           Procedure: sp_test1
            sql_mode:
Create Procedure: CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_test1`(OUT param1 INTEGER)
    BEGIN
      SELECT COUNT(*) INTO param1 FROM test1;
    END
character_set_client: utf8
collation_connection: utf8_general_ci
  Database Collation: utf8_general_ci
1 row in set (0.00 sec)

ERROR:
No query specified

mysql>

トリガを作る(削除する)には

トリガを作るには、CREATE TRIGGER 文を使います。逆に削除するには、DROP TRIGGER 文を使います。

DELIMITER //
CREATE TRIGGER test1_dt AFTER INSERT ON test1 FOR EACH ROW
BEGIN
  DECLARE id0 INTEGER;
  SELECT max(id) m INTO id0 FROM test1;
  UPDATE test1 SET dt = now() WHERE id = id0;
END//
DELIMITER ;

 

mysql> DROP TRIGGER trigger1;

 

 


 このページの先頭 

 開設 2014年12月   著作権 2014-2015 bonk.red  連絡先: こちらからメッセージを送ってください。(お仕事も大募集)