MySQL/MariaDB如何创建用户并限制指定才能IP访问?

登入数据

mysql --version
mysql  Ver 15.1 Distrib 10.9.3-MariaDB, 
for debian-linux-gnu (x86_64) using readline EditLine wrapper

创建一个数据库:

CREATE DATABASE testdb;
 
CREATE DATABASE `testdb` DEFAULT COLLATE = `utf8mb4_general_ci`;

给网站程序创建一个用户

创建用户:

-- mysql 8.0  mysql_native_password
-- CREATE USER 'wang123net1a'@'%' IDENTIFIED WITH mysql_native_password BY 'Pwd@1234&';

创建一个名为 wang123net1a 的用户:

-- 指定 只有本机才能访问
CREATE USER 'wang123net1a'@'localhost' IDENTIFIED BY 'Pwd@123';

-- 指定 只有10.0.4.14 才能访问
CREATE USER 'wang123net1a'@'10.0.4.14' IDENTIFIED BY 'Pwd@123';

-- 如果不限制IP,则直接使用百分号 % (不安全)
CREATE USER 'wang123net1a'@'%' IDENTIFIED BY 'Pwd@123';

给创建的账号授予权限:

一般我们只赋予某个用户指定的权限(比如仅selelct/insert/update权限),而非去全部权限:

-- 给来自 localhost 的用户赋权
GRANT select,insert,update,delete,create,index,alter ON testdb.* TO 'wang123net1a'@'localhost';

-- 给来自 10.0.4.14 的用户赋权
GRANT select,insert,update,delete,create,index,alter ON testdb.* TO 'wang123net1a'@'10.0.4.14';

-- 赋予用户 数据库 testdb 的全部权限
GRANT all privileges on testdb.* TO wang123net1a@"%";

使用 show grants 可以查看用户的权限:

SHOW GRANTS FOR wang123net1a@'%';

SHOW GRANTS FOR wang123net1a@'localhost';

SHOW GRANTS FOR wang123net1a@'10.0.4.14';

删除用户的权限:

DROP USER 'wang123net1a'@'%';

DROP USER 'wang123net1a'@'localhost';

DROP USER 'wang123net1a'@'10.0.4.14';

刷新

使用 FLUSH privileges 刷新权限,让权限设置立即生效。

FLUSH privileges;