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;