MySQLのセキュリティとDCL文

セキュリティを議論では、我々は全体のサーバホストのセキュリティ(だけでなく、考えるのMySQLサービス)の攻撃に耐える必要性、盗聴、スキャン、亀裂などを。
MySQLの ACLデータベースアクセス制御サーバに接続しているすべてのユーザーのためには、故障につながらない内部標準操作を軽減することです。
MySQLは、クライアントとサーバ間のSSL暗号化をサポートしています。
もちろん、ここで説明する概念の多くは、に固有のものではありませんMySQLのほぼすべてのアプリケーションが同じに適している一般的な考え方。

ヒール

  • MySQLは、以下のガイドラインに従って実行されています。
    • ユーザーに設定しないで、スーパーユーザー権限を実行します。
    • データベースにプレーンテキストでパスワードを保存しないでください
    • シンプルな文字のパスワードを使用しないでください
    • 非信頼されたホストがスキャンを使用する権限を許可しません

ユーザーアカウントの管理

ログインのMysql、使用のmysql -uルート-pは、データベースに接続することができますが、これは単にデータベースへのローカル接続の方法で、多くの場合、ホスト接続でネットワーク上の本番データベースです

リモート・データベースに接続-P //ポートを指定し、[既定3306]
リモート・データベースに接続-h //アドレスを指定し、[localhostのデフォルト]
[デフォルトルート]リモートデータベースアカウントへの接続を指定// -u
[デフォルトを接続するために、リモート・データベースのパスワードを指定// -pパスワードは空白]です
//が実行-eコマンドmysqlデータベースのSQL
mysqlデータベースソケットを指定-S //を

## 不安全
[root@Mysql ~]# mysql -uroot -p'mypass'
## 推荐方式
[root@Mysql ~]# mysql -uroot -p
Enter password:
## 推送远程登录方式
[root@Mysql ~]# mysql -h192.168.56.11 -P3306 -uroot -p
Enter password:
## 非交互式操作数据库
[root@Mysql ~]# mysql -uroot -p'Sgy123.com' -e "show databases;"
mysql: [Warning] Using a password on the command line interface can be insecure.
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

ユーザーを作成します。

## 先创建本地用户 , 后授权
mysql> create user dasha@'localhost' identified by 'DASHA123.com' with 参数;
## 基于已有用户进行授权
mysql> grant all on *.* to dasha@'localhost';
## 使用 GRANT 语句创建本地用户并授权
mysql> grant all on *.* to ersha@'localhost' identified by 'ERSHA123.com';

ユーザの削除

## DROP USER 语句删除
mysql> drop user 'bgx1'@'localhost';
## 注意 Mysql5.6: 先回收权限 , 然后删除
mysql> revoke all privilege user_name;
mysql> drop user user_name;
## DELETE 语句删除
mysql> delete from mysql.user where user='bgx1' and host='localhost';

パスワード変更

## 方法一
mysql> set password for dasha@'localhost'=password('Dasha123.com');
## 方法二
mysql> update mysql.user set authentication_string=password('new_password') where user='bgx1' and host='localhost';
## 刷新权限
mysql> flush privileges;
## 用户自己修改自己密码
set password=password("new_password");

アクセスシステム

  • グローバル承認mysql.user
    • ユーザーフィールド
    • 権利フィールド
    • セキュリティ分野
    • リソース制御フィールド
  • mysql.db(データベースレベル)
    • ユーザーフィールド
    • 権利フィールド
  • mysql.tables_priv(表レベル)
  • mysql.columns_priv(列レベル)
  • アプリケーションの権限の順
    • USER-> DB-> tables->コラム

構文:[オプションパラメータを指定して「パスワード」によって識別]「クライアントホスト」@「ユーザ名」に、ライブラリ名テーブル名に付与権限のリスト。

パラメータ:

  • [アクセス許可リスト
    • (権限の制限を含めない)すべてすべての権限
    • 別には、[削除]を選択し、更新、挿入のライセンスを取得しました
  • ライブラリ名時計
    • すべてのライブラリのすべてのテーブルのグローバルレベル
    • テスト・データベース内のすべてのテーブルのためのテスト。*データベースレベル
    • 図書館の学生のためのtest.studentテーブル表レベルテスト
    • SELECT列レベル以下のフィールドテストライブラリT1テーブルのtest.t1 ON(ID)、INSERT(名前、年齢)
  • クライアントのホスト
    • ocalhost 指定本机
    • 割り当て特定のホスト192.168.1.1
    • すべてのホスト192.168.1.0のネットワークセグメント
    • すべてのホスト192.168.1。%セグメント
    • %すべてのホストを指定します
  • パラメータを持ちます
    • GRANT OPTIONライセンスオプション
    • MAX_QUERIES_PER_HOURは時間ごとに実行クエリの数を定義することができ
    • MAX_UPDATES_PER_HOURはの実装を可能にし、毎時更新の数を定義し
    • 時間ごとに確立できる接続数がMAX_CONNECTIONS_PER_HOURを定義し
    • MAX_USER_CONNECTIONS 1人のユーザが同時に確立された接続の数を定義することができ

GRANT権限の例

## 创建远程用户 admin1 并赋予所有库下的所有表所有权限(不包括授权限)
mysql> grant all on *.* to admin1@'%' identified by 'Sgy123.com';
## 创建远程用户 admin2 并赋予所有库下的所有表所有权限
mysql> grant all on *.* to admin2@'%' identified by 'Sgy123.com' with grant option;
## 创建远程用户 admin2 并赋予 test 库下的所有表所有权限(不包括授权限)
mysql> grant all on test.* to admin3@'%' identified by 'Sgy123.com';
## 创建用户 admin4 ,只允许在 192.168.1.1 主机登陆,并赋予 test 库下的所有表所有权限(不包括授权限)
mysql> grant all on test.* to admin4@'192.168.1.1' identified by 'Sgy123.com';
## 创建远程用户 admin5 并赋予 test 库下的 t1 所有权限(不包括授权限)
mysql> grant all on test.t1 admin5@'%' identified by 'Sgy123.com';
## 创建远程用户 admin5 并赋予 test 库的 t1 表下查询 id 列和插入 name,age 列
mysql> grant select(id),insert(name,age) on test to admin6@'%' identifide by 'Sgy123.com';

アクセス回復

ビューのユーザー権限

## 查看自己的权限(两种显示方式)
mysql> show grants;
mysql> show grants\G
## 查看其它用户权限
mysql> show grants for dasha@'localhost';
mysql> show grants for dasha@'localhost'\G

リサイクル権限

構文:ユーザー名からデータベースリスト名ON REVOKE権限@「クライアントホスト」;

## 回收 delete 权限
mysql> revoke delete on *.* from dasha@'localhost';
## 回收所有权限
mysql> revoke all privileges on *.* from dasha@'localhost';
## 回收 grant 权限
mysql> revoke grant option on *.* from ersha@'localhost';

おすすめ

転載: www.cnblogs.com/songguoyou/p/11883800.html