mysql8怎么授予权限
时间 : 2023-03-22 10:19:02声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性

在MySQL8中,授予用户权限可以使用GRANT语句。语法如下:

GRANT privileges ON database.table TO user@host IDENTIFIED BY 'password';

其中,`privileges`表示要授予的权限,可以是以下之一:

- ALL PRIVILEGES:授予所有权限;

- SELECT:允许读取表中的数据;

- INSERT:允许向表中插入数据;

- UPDATE:允许更新表中的数据;

- DELETE:允许从表中删除数据;

- CREATE:允许创建新表或数据库;

- DROP:允许删除表或数据库;

- INDEX:允许创建或删除索引;

- ALTER:允许修改表结构;

- REFERENCES:允许创建外键约束;

- CREATE TEMPORARY TABLES:允许创建临时表;

- EXECUTE:允许执行存储过程或函数;

- SHOW VIEW:允许查看视图。

`database.table`表示要授予权限的数据库和表名。如果要授予所有数据库和表的权限,可以使用*代替具体名称。

`user@host`表示用户和主机名。例如,要授予用户名为'john',密码为'password',可以在本地访问数据库的权限,可以使用以下语句:

GRANT ALL PRIVILEGES ON *.* TO 'john'@'localhost' IDENTIFIED BY 'password';

要查看授予给某个用户的权限,可以使用以下语句:

SHOW GRANTS FOR 'john'@'localhost';

注意,在MySQL8中,授权操作可能需要先启用授权表。可以使用以下语句启用授权表:

USE mysql;

CREATE TABLE IF NOT EXISTS user (

Host char(60) COLLATE utf8_bin NOT NULL DEFAULT '',

User char(32) COLLATE utf8_bin NOT NULL DEFAULT '',

Select_priv enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',

...

PRIMARY KEY (`Host`,`User`),

...

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

FLUSH PRIVILEGES;

在 MySQL8 中授予权限与其他版本略有不同,下面我将介绍如何在 MySQL8 中授予权限。

首先,登录 MySQL 数据库,可以使用以下命令:

mysql -u username -p

其中,`username` 为 MySQL 数据库的用户名,执行该命令后会提示输入密码。

接着,创建一个新的数据库用户,可以使用以下命令:

CREATE USER 'newuser'@'%' IDENTIFIED BY 'password';

其中,`newuser` 为新用户的用户名,`%` 表示此用户可以从任何地方访问该数据库。`password` 为新用户的密码,此处应该替换为一个强密码。

然后,授予新用户具有某些数据库权限,可以使用以下命令:

GRANT ALL PRIVILEGES ON database_name.* TO 'newuser'@'%';

其中,`database_name` 为数据库名称,`newuser` 为将被授予权限的用户。

最后,记得刷新 MySQL 的权限表以使更改生效,可以使用以下命令:

FLUSH PRIVILEGES;

到此为止,您已经成功在 MySQL8 中授予了权限。当然,根据实际需求,您可以授予新用户更多或更少的权限。

除了上述方法,还可以使用 MySQL 的图形化界面工具如 phpMyAdmin 或 MySQL Workbench 等来授予权限,步骤类似,但界面更加友好,也可以减少语法错误的风险。