MYSQLの覚書

# MYSQLの操作をコマンドラインで出来るようになる

##/etc/my.cnfの編集

文字コードをUTF-8にする下記を追記

```bash
[mysqld]
character-set-server=utf8

[mysql]
default-character-set=utf8

[mysqldump]
default-character-set=utf8

```

## MySQLでターミナル上のコマンド保管を有効にする

### コマンドで有効にする場合

`mysql -uユーザー名 -p --auto-rehash`

オプションで`--auto-rehash`を付けてmysqlコマンドを実行

### /etc/my.cnfの変更する場合

```
[mysql]
suto-rehash
```

`[mysql]`の項目に`auto-rehash`を追加

## MYSQLの**root**のパスワードの設定

```mysql
mysqladmin -u root password パスワード
```

## MYSQLコンソールでの作業

```mysql
mysql -u root -p
```

rootでログインする際にログインパスワードを聞かれるので入力
正しければログインでき作業ができる

## MYSQLの一般ユーザの作成と権限付与、ユーザーの削除

### ユーザの作成

```sql
GRANT select,insert,delete,update,create,drop,alter,index
ON データベース名.*
TO ユーザー名 IDENTIFIED BY 'パスワード';
```

#### 権限について

- 特殊な権限
  - `ALL PRIVILEGES / ALL` ：GRANT権限以外すべて付与
  - USAGE：何の権限も付与しない
- データ操作
  - `SELECT`
  - `DELETE`
  - `UPDATE`
  - `INSERT`
- スキーマ変更
  - `CREATE`:データベース、テーブルの作成が可能
  - `DROP`:データベース、テーブルの削除が可能
  - `ALTER`:フィールドの変更とテーブル名の変更が可能
  - `INDEX`:INDEXの作成と削除が可能
  - `FILE`:ファイルへのアクセス権限を付与
- データベース管理
  - `PROCESS`:プロセスの権限を付与
  - `RELOAD`:リロード権限の付与
  - `SHUTDOWN`:シャットダウン権限の付与


### ユーザの削除

```sql
DROP USER ユーザ名;
```

### ユーザ一覧

```sql
SELECT Host, User, Password from mysql.user;
```

### ユーザ権限表示

```sql
SHOW GRANTS FOR ユーザ名;
```

## データベースを作ったり、削除してみる

### データベースの作成

```sql
CREATE DATABASE データベース名;
```

### データベース削除

```sql
DROP DATABASE データベース名;
```

### データベース一覧

```sql
SHOW DATABASES;
```

### 作業データベースの変更

```sql
USE データベース名;
```

##　テーブルの作成と削除 
### テーブルの作成

```sql
CREATE TABLE データベース名.テーブル名(
ID CHAR(4),
NAME VARCHAR(40),
HOGE TEXT
);
```

#### 型について

数値型

|型名|バイト|
|---|---|
|TINYINT|1バイト整数|
|SMALLINT|2バイト整数|
|MEDIUMINT|3バイト整数|
|INT, INTEGER|4バイト整数|
|BIGINT|8バイト整数|
|FLOAT|浮動小数点|
|FLOAT(X)|小さい浮動小数点|
|DOUBLE(M,D)|通常の浮動小数点|
|DECIMAL(M,D), numeric(M,D)|パック無し浮動小数点|

日付･時刻型

|型名|説明|
|---|---|
|DATE|日付|
|DATETIME|日付+時刻|
|TIMESTAMP|タイムスタンプ|
|TIME|時間|
|YEAR|年|

文字列型

|型名|説明|
|---|---|
|CHAR(M)|固定長文字列。テーブル作成時に定義された長さに固定され、格納時には必ず指定された長さまで右側に空白が埋められる。取り出す場合には、後方の空白スペースは削除される。|
|VARCHAR(M)|可変長文字列（任意の長さ指定可）。CHAR型と違い、埋め込み処理は行われない。|
|TINYBLOB, TINYTEXT,BLOB, TEXT, MEDIUMBLOB, MEDIUMTEXT, LONGBLOB, LONGTEXT, ENUM('値1','値2',...), SET('値1','値2',...)|可変長文字列（任意の長さ指定可）。BLOB型はデータをバイナリとして格納。TEXT型はデータを文字列として格納。VARCHAR型とほぼ同じですが、最大長の記憶容量が異なる。また、TEXT型のカラムには、主キーやインデックスを設定不可。|
|ENUM('値1','値2',...)|テーブル作成時に列挙された格納可能な値のリストから、値が選択される文字列オブジェクト。|
|SET('値1','値2',...)|ゼロ以上の値を有する文字列オブジェクト。テーブル作成時に格納可能な値のリストを指定。複数の要素を指定する場合は、カンマ区切りで指定。そのためSET要素の値にカンマは使用不可。|

### テーブルの削除

```sql
DROP TABLE テーブル名;
```

### テーブルの詳細表示

```sql
DESC テーブル名;
```

### テーブル一覧

```sql
SHOW TABLES FROM データベース名;
```
## テーブルにデータを投入や、選択削除

### 登録

```sql
INSERT INTO テーブル名(フォールド名,フィールド名) VALUES(値, 値);
```

### 表示

```sql
SELECT フィール名 FROM テーブル名
```

### 削除
WHEREで絞り込んでから使用する（無しでもいけるが事故の元になるので気をつける）

```sql
DELETE FROM テーブル名 WHERE フィールド名 = 値;
```

### 更新
WHEREで絞り込んでから使用する（無しでもいけるが事故の元になるので気をつける）

```sql
UPDATE テーブル名 SET フィールド名 = 値 WHERE フィールド名 = 値;
```

## phpMyAdminのインストールとPHPと繋がることを確認
### EPELの導入

`wget http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/i386/epel-release-6-8.noarch.rpm`

`sudo rpm -ivh epel-release-6-8.noarch.rpm`

### phpMyAdminとphp-mysql、php-mcryptをEPELポジトリを有効にしてインストール

`yum --enablerepo=epel install -y phpMyAdmin php-mysql php-mcrypt`

### アクセス権を変更するためにphpMyAdmin.confの編集

`/etc/httpd/conf.d/phpMyAdmin.conf`

### ブラウザで確認

下記のようなURLでアクセス可能

`http://localhost/phpmyadmin`