MySQL8.0 创建用户、配置用户权限、添加外网访问
添加用户、外网访问
在MySQL 8.0中,root用户的外网访问权限默认是被禁止的。要修改root用户的外网访问权限,您需要进行以下步骤:
-
连接到MySQL服务器。您可以使用MySQL命令行客户端或其他数据库管理工具。
-
使用以下命令以root身份登录MySQL:
sudo mysql -u root -p
然后输入您的root用户密码。
- 输入以下命令以修改root用户的外网访问权限:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '您的密码';
CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '您的密码';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
请将 '您的密码'
替换为您要设置的root用户密码。
-
需要编辑MySQL配置文件以允许远程访问。找到并打开MySQL配置文件(通常在
/etc/mysql/mysql.conf.d/mysqld.cnf
或/etc/mysql/my.cnf
)。 -
在配置文件中找到
bind-address
行,并将其注释或更改为以下内容:
# bind-address = 127.0.0.1
这将允许MySQL接受来自所有IP地址的连接。
-
保存并关闭配置文件。
-
重新启动MySQL服务,使更改生效。使用适合您的操作系统的命令:
sudo service mysql restart
或
sudo systemctl restart mysql
现在,root用户应该具有外网访问权限。请注意,出于安全考虑,授予root用户远程访问权限可能会有风险。出于安全原因,建议使用具有更严格访问权限的用户,并限制远程访问仅限于需要的IP地址。
修改用户DDL、DML权限
要修改MySQL 8.0中的DDL(数据定义语言)和DML(数据操作语言)权限,您可以按照以下步骤进行操作:
步骤1:使用root用户登录MySQL
在命令行终端中,使用root用户登录MySQL服务器。执行以下命令:
mysql -u root -p
输入root用户的密码,然后按下回车键登录到MySQL。
步骤2:查看当前用户权限
查看当前用户的权限,可以使用以下命令:
SHOW GRANTS FOR '<your_username>';
将<your_username>
替换为您要修改权限的用户名。
步骤3:修改DDL权限
a. 修改已存在用户的DDL权限:
在上一步中,您可以看到显示了当前用户的权限信息。查找到以GRANT ALTER, CREATE, DROP, INDEX, …
开头的权限语句,这些权限允许用户进行DDL操作。如果希望取消某个DDL权限,可以使用以下示例命令:
REVOKE DROP ON your_database_name.* FROM '<your_username>';
将your_database_name
替换为您要更改权限的数据库名称,将<your_username>
替换为要修改权限的用户名。
b. 修改新建用户的DDL权限:
如果要为新建用户设置默认的DDL权限,可以使用以下命令:
CREATE USER 'your_username'@'localhost';
GRANT CREATE, ALTER, DROP, INDEX, … ON your_database_name.* TO 'your_username'@'localhost';
将your_username
和your_database_name
替换为适当的值,并根据需要添加其他DDL权限。
步骤4:修改DML权限
要修改DML权限,您可以按照步骤3的示例将DDL替换为DML。例如,如果要授予或撤销INSERT权限,可以使用以下命令:
授予INSERT权限:
GRANT INSERT ON your_database_name.* TO 'your_username'@'localhost';
撤销INSERT权限:
REVOKE INSERT ON your_database_name.* FROM 'your_username'@'localhost';
根据您的需求,调整语句中的数据库、用户名和权限。
步骤5:刷新权限
当您完成对权限的修改后,必须刷新MySQL的权限缓存,以使更改生效。使用以下命令:
FLUSH PRIVILEGES;
这将刷新权限并使修改后的权限立即生效。
步骤6:退出MySQL
完成所有权限修改后,可以使用以下命令退出MySQL:
EXIT;
这将退出MySQL命令行终端。
通过按照上述步骤,您可以在MySQL 8.0中修改DDL和DML权限。请注意,修改权限可能会对数据库的安全性和数据完整性产生影响,请谨慎操作。
DDL、DML权限列表
以下是MySQL中的常见DDL和DML权限列表:
DDL权限(数据定义语言):
- CREATE:创建新数据库、表、视图、函数、存储过程等。
- ALTER:修改数据库结构,如更改表的结构(添加/删除列)、修改列的属性等。
- DROP:删除数据库、表、视图、函数、存储过程等。
- INDEX:创建、修改或删除索引。
- TRIGGER:创建、修改或删除触发器。
- VIEW:创建、修改或删除视图。
- SHOW VIEW:查看视图的定义信息。
- GRANT OPTION:授予其他用户权限。
DML权限(数据操作语言):
- SELECT:从表中检索数据。
- INSERT:向表中插入新的行。
- UPDATE:更新表中已有的行。
- DELETE:从表中删除数据。
- EXECUTE:执行存储过程或函数。
这些权限可以单独授予或撤销给特定的用户或用户组。请注意,在实际使用中,根据具体需要,可以进一步细分DDL和DML权限。