それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

MySQLのGRANT(権限)の追加/削除/確認

MySQLのGRANTで、権限を管理する

GRANTのコマンドで権限を操作することが出来ます。

権限の確認

show grants for takuya_1st

権限の付与

grant all on takuya_db.* to takuya_1st@'%'

権限の削除

revoke all on takuya_db.* from  takuya_1st@'%'

追加・削除・確認を憶える

一式セットで覚えて、一式セットで使うとしっかりした設定ができます。

実際の例

権限の付与と確認

mysql> grant all on takuya.* to 'takuya'@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> show grants for takuya;
+----------------------------------------------------+
| Grants for takuya@%                                |
+----------------------------------------------------+
| GRANT USAGE ON *.* TO 'takuya'@'%'                 |
| GRANT ALL PRIVILEGES ON `takuya`.* TO 'takuya'@'%' |
+----------------------------------------------------+
2 rows in set (0.00 sec)
mysql> FLUSH PRIVILEGES

ユーザー名の後ろの @%

@%  は @host_name を示します。

takuya@localhost
takuya@example.com
takuya@192.168.2.1

など、接続元のホスト名を示します。

LIKE で使う%と同じ

takuya@%

なので全てホストですね。

権限の削除

mysql> revoke all on takuya.* from 'takuya'@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> show grants for takuya;
+------------------------------------+
| Grants for takuya@%                |
+------------------------------------+
| GRANT USAGE ON *.* TO 'takuya'@'%' |
+------------------------------------+
1 row in set (0.00 sec)

mysql>FLUSH PRIVILEGES

FLUSH PRIVILEGES

権限テーブルをフラッシュ(書き込み)して、設定を確実に反映させる。

確実に反映させるのに必要。

grant /revoke は英語そのまま

別になにも難しくない。 revoke / grant は英語そのままの意味で、英語そのまま使い方なのでとっても簡単に覚えられます。

revoke 権限 from ユーザー名
grant 権限 to ユーザー名
show grants fro ユーザー名

英語のSVOCそのままですね。

ユーザーの追加や認証PAMの追加はこちら

http://takuya-1st.hatenablog.jp/entry/2015/03/16/164719

MySQLでシェル(bash/sh)からSQLを実行する方法

シェルスクリプトからMySQLSQLを実行する

いくつか方法はある。

1.SQL 文 を eval するもの

MySQLインタラクティブシェルと同じように実行する。

mysql -p -u ユーザー名 データベース名 -e "SQL 文"

-e の例

takuya@atom:~$ mysql  -p -u root  mysql -e  "select host, User, Password,plugin from user where plugin <> '';"
Enter password:
+------+--------+----------+----------+
| host | User   | Password | plugin   |
+------+--------+----------+----------+
| %    | takuya |          | auth_pam |
+------+--------+----------+----------+

対話シェルにevalさせてるので、通常の対話シェルと同じ。

2.SQLファイルを使うもの。

SQL文を使うことを前提にしたもの、こちらはshell から実行してパイプライン処理することを前提にしているので整形などがされてない。

2.1 標準入力に渡す。(echo )

標準入力にSQL文を渡せば、実行される。

echo $SQL | mysql -p 

echo 実際の例

takuya@atom:~$ echo  "select host, User, Password,plugin from user where plugin <> '';" | mysql -p -u root  mysql
Enter password:
host    User    Password    plugin
%   takuya      auth_pam

標準入力に渡せば実行される。

2.2 標準入力に渡す方法( cat )

cat path/to/my_query.sql | grep ... | sort ... | mysql -p -u root  mysql

2.3標準入力に渡す方法( リダイレクト)

mysql -p -u root  mysql < path/to/my/file.sql

2.4 標準入力に渡す方法(ヒアドキュメント)

mysql -p -u root  mysql <<EOF
select * from example;
EOF

ヒアドキュメントは、コマンドも使えるので

mysql -p -u root  mysql <<EOF
$( cat my_query.sql )
cat $var_name
EOF

などとも出来て便利

3.ファイルの実行

mysql の対話シェルで、ファイルを読み込みたいとき。これも利用場面が多い。 ヒストリの戻るじゃ限界あるしね。

mysql> source
ERROR:
Usage: \. <filename> | source <filename>
mysql>