Mysqlデータベース管理ユーザー
1. ユーザーを管理する
1.1. ユーザーの作成
CREATE USER '用户名'@'来源地址' [IDENTIFIED BY [PASSWORD] '密码'];
- ユーザー名: 作成したユーザー名を指定します
- ソース アドレス: 新しく作成したユーザーがログインできるホストを指定します。IP アドレス、ネットワーク セグメント、およびホスト名の形式を使用できます。ローカル ユーザーは localhost を使用できます。任意のホストからのログインを許可するには、ワイルドカード文字を使用できます%。
- パスワード:
- プレーンテキストのパスワードを使用します。パスワードを直接入力すると、データベースに挿入するときに mysql が自動的に暗号化します。
- 暗号化されたパスワードを使用するには、まず SELECTPASSWORD('password'); を使用して暗号文を取得し、次に PASSWORD 'ciphertext'; をステートメントに追加する必要があります。
- 「IDENTIFIED BY」部分を省略すると、ユーザーのパスワードは空になります(非推奨)
例: クリアテキストでユーザーを作成する
CREATE USER 'lilade'@'localhost' IDENTIFIED BY '123123';
例: 秘密のテキストを使用してユーザーを作成する
select password('abc123');
create user 'james'@'localhost' identified by password '*6691484EA6B50DDDE1926A220DA01FA9E575C18A';
1.2. ユーザー情報の表示
作成したユーザーはmysqlデータベースのユーザーテーブルに保存されます。
use mysql;
select User,authentication_string,Host from user;
1.3. ユーザー名の変更
rename user 'lilade'@'localhost' to 'DM'@'localhost';
1.4. ユーザーの削除
drop user 'james'@'localhost';
1.5. 現在のログインユーザーのパスワードを変更する
set password = password('123456');
1.6. 他のユーザーのパスワードを変更する
set password for 'DM'@'localhost' = password('abc123');
1.7. パスワードを忘れた場合の解決策
mysql パスワードを忘れた場合
1. 設定ファイルを変更し、mysql へのログイン時に認可テーブルが使用されないように設定を追加します。
#进入配置文件
vim /etc/my.cnf
#添加此行
skip-grant-tables
2. サービスを再起動し、ログインしてテストします
#重启服务
systemctl restart mysqld.service
#登录
mysql
3. update を使用して root パスワードを変更し、データベースを更新します。
#重设密码
update mysql.user set authentication_string = password('abc123') where user='root';
#刷新数据库
flush privileges;
4. ログアウトし、再度ログインしてテストします
mysql -uroot -pabc123
5. my.conf 設定ファイルを再度変更し、以前に追加した設定コマンドをコメント アウトするか削除します。
2. データベースのユーザー認証
2.1. 権限の付与
- GRANT ステートメント: データベース ユーザーのアクセス許可を設定するために特に使用されます。指定したユーザー名が存在しない場合は GRANT ステートメントで新規ユーザーを作成し、指定したユーザー名が存在する場合は GRANT ステートメントを使用してユーザー情報を変更します。
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'来源地址' [IDENTIFIED BY '密码'];
-
権限リスト: 「選択、挿入、更新」など、使用が許可されているさまざまなデータベース操作をカンマで区切ってリストするために使用されます。すべての権限を示すには「all」を使用します。これにより、あらゆる操作の実行が許可されます。
-
データベース名.テーブル名: 認可操作用のデータベースとテーブルの名前を指定するために使用されます。ワイルドカード文字「」を使用できます。たとえば、「kgc.」を使用すると、認可操作のオブジェクトが kgc データベース内のすべてのテーブルであることを示します。
-
「ユーザー名@ソースアドレス」: アクセスを許可されるユーザー名とクライアントアドレス、つまり誰がどこから接続できるかを指定するために使用されます。送信元アドレスは、ドメイン名、IP アドレス、または「%」ワイルドカード文字を使用して、「%.accp.com」、「192.168.80」など、特定のエリアまたはネットワーク セグメント内のすべてのアドレスを表すことができます。 %」など。
-
IDENTIFIED BY: ユーザーがデータベースに接続するために使用するパスワード文字列を設定するために使用されます。新規ユーザー作成時に「IDENTIFIED BY」の部分を省略した場合、ユーザーのパスワードは空白になります。
例: ユーザー DM は、ali データベース内のすべてのテーブルのデータ レコードをローカルでクエリすることが許可されていますが、他のデータベース内のテーブルのレコードをクエリすることは禁止されています。
#切换mysql库
use mysql;
#查看用户
select User,authentication_string,Host from user;
#授权lilade用户
grant select on mysql.user to 'lilade'@'localhost' identified by 'abc123';
ログインしてライブラリを表示する
#登录创建的库
mysql -lilade -pabc123
#查看数据库,表,结构
show databases;
use mysql;
show tables;
select * from user;
2.2. 表示権限
SHOW GRANTS FOR 用户名@来源地址;
show grants for 'lilade'@'localhost';
2.3. ユーザー権限の取り消し
#在root用户登录
mysql -uroot -pabc123
#查看lilade用户权限
show grants for 'lilade'@'localhost';
#撤销lilade用户查询权限
revoke select on mysql.* from 'lilade'@'localhost';