0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

CentOS8.2でMySQL8.0ユーザーにGRANT設定する手順

Last updated at Posted at 2020-11-27

| ../ |

VPSサーバー(CentOS8.2)でMySQL 8.0を使用している。特定のデータベースに特化したユーザーを登録し、DBへのアクセス権限(GRANT)を設定する手順をメモしておく。

例として、kankeriというデータベースに管理者としてkadminと一般ユーザーとしてkuserを登録することにする。kadminにはALL PRIVILEGESを設定し、kuserには一般的なCRUD操作のみを許可する。MySQL 8.0では、認証回りが強化されたため、userテーブルからpasswordカラムがなくなっている点に注意すること。(正確には、暗号化されたパスワードはauthentification_stringというカラムに移されている。)


$ mysql -uroot -p mysql
> use mysql;
> create database kankeri;			// まず、kankeriデータベースを生成	
	
> use kankeri;
> show variables like 'char%';

> # delete from user where user='kadmin';
> # delete from user where user='kuser';

> CREATE USER kadmin@localhost IDENTIFIED BY '***';			// kadmin追加
> CREATE USER kuser@localhost IDENTIFIED BY '***';			// kuser追加

> GRANT ALL PRIVILEGES ON kankeri.* TO kadmin@localhost;				// kadminの権限
> GRANT DELETE,INSERT,SELECT,UPDATE ON kankeri.* TO kuser@localhost;	// kuserの権限

> select host,user,plugin from user;
+-----------+------------------+-----------------------+
| host      | user             | plugin                |
+-----------+------------------+-----------------------+
| localhost | kadmin           | mysql_native_password |
| localhost | kuser            | mysql_native_password |
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session    | caching_sha2_password |
| localhost | mysql.sys        | caching_sha2_password |
| localhost | root             | mysql_native_password |
+-----------+------------------+-----------------------+

> flush privileges;
> exit

kadmin、kuserともパスワードの認証方式は、mysql_native_passwordになっている。この設定は、/etc/my.cnf.d/mysql-default-authentication-plugin.cnfで指定したものに従っている。

以下のような手順で、権限が適切に機能しているかチェックしておこう。

$ mysql -uroot -p kankeri
> create table dummy1 (id int, name varchar(50));
> insert dummy1 values(10,’梶井基次郎’);

// kadminは、kankeriデータベース以外にはアクセスできない
$ mysql -ukadmin -p kankeri         
> create table dummy2 (id int, name varchar(50));
> insert dummy2 values(20,’中島敦’);
> use mysql;
ERROR 1044 (42000): Access denied for user 'kadmin'@'localhost' to database 'mysql'

// kuserは、kankeriデータベース以外にはアクセスできない
// kuserは、create tableなどスキーマに関する操作はできない
$ mysql -ukuser -p kankeri
> create table dummy3 (id int, name varchar(50));
ERROR 1142 (42000): CREATE command denied to user 'kuser'@'localhost' for table 'dummy3'
> insert dummy1 values(30,’檸檬’); 
> insert dummy2 values(40,’山月記’);
> select * from dummy1;
> select * from dummy2;

以上

| ../ |

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?