时间:2021-07-01 10:21:17 帮助过:8人阅读
开启远程连接:
2, 修改 Mysql-Server 用户配置
mysql> USE mysql; -- 切换到 mysql DB
Database changed
mysql> SELECT User, Password, Host FROM user; -- 查看现有用户,密码及允许连接的主机
+------+----------+-----------+
| User | Password | Host |
+------+----------+-----------+
| root | | localhost |
+------+----------+-----------+
1 row in set (0.00 sec)
mysql> -- 只有一个默认的 root 用户, 密码为空, 只允许 localhost 连接
12
mysql> -- 下面我们另外添加一个新的 root 用户, 密码为空, 只允许 192.168.1.100 连接
mysql> GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘192.168.1.100‘ IDENTIFIED BY ‘‘ WITH GRANT OPTION;
mysql> -- @‘192.168.1.100‘可以替换为@‘%’就可任意ip访问,当然我们也可以直接用 UPDATE 更新 root 用户 Host, 但不推荐, SQL如下:
mysql> -- UPDATE user SET Host=‘192.168.1.100‘ WHERE User=‘root‘ AND Host=‘localhost‘ LIMIT 1;
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
如何远程访问MySQL数据库设置权限方法总结,讨论访问单个数据库,全部数据库,指定用户访问,设置访问密码,指定访问主机。
1,设置访问单个数据库权限
mysql>grant all privileges on test.* to ‘root‘@‘%‘;
说明:设置用户名为root,密码为空,可访问数据库test
2,设置访问全部数据库权限
mysql>grant all privileges on *.* to ‘root‘@‘%‘;
说明:设置用户名为root,密码为空,可访问所有数据库*
3,设置指定用户名访问权限
mysql>grant all privileges on *.* to ‘liuhui‘@‘%‘;
说明:设置指定用户名为liuhui,密码为空,可访问所有数据库*
4,设置密码访问权限
mysql>grant all privileges on *.* to ‘liuhui‘@‘%‘ IDENTIFIED BY ‘liuhui‘;
说明:设置指定用户名为liuhui,密码为liuhui,可访问所有数据库*
5,设置指定可访问主机权限
mysql>grant all privileges on *.* to ‘liuhui‘@‘10.2.1.11‘;
说明:设置指定用户名为liuhui,可访问所有数据库*,只有10.2.1.11这台机器有权限访问
还可以设置指定访问某个数据库下的某个数据表,请继续关注MySQL基础知识系列。
使用root账户进入mysql
create user ‘test‘@‘localhost‘ indentified by ‘123456‘;
grant all privileges on *.* to ‘test‘@‘localhost‘ identified by ‘123456‘;
grant all privileges on *.* to ‘test‘@‘%‘ identified by ‘123456‘; #在其它任意台电脑上访问
flush privileges;
/* 用户和权限管理 */ ------------------
用户信息表:mysql.user
-- 刷新权限
flush privileges
-- 增加用户
create user 用户名 identified by [password] 密码(字符串)
- 必须拥有mysql数据库的全局create user权限,或拥有insert权限。
- 只能创建用户,不能赋予权限。
- 用户名,注意引号:如 ‘user_name‘@‘192.168.1.1‘
- 密码也需引号,纯数字密码也要加引号
- 要在纯文本中指定密码,需忽略password关键词。要把密码指定为由password()函数返回的混编值,需包含关键字password
-- 重命名用户
rename user old_user to new_user
-- 设置密码
set password = password(‘密码‘) -- 为当前用户设置密码
set password for 用户名 = password(‘密码‘) -- 为指定用户设置密码
-- 删除用户
drop user 用户名
-- 分配权限/添加用户
grant 权限列表 on 表名 to 用户名 [identified by [password] ‘password‘]
- all privileges 表示所有权限
- *.* 表示所有库的所有表
- 库名.表名 表示某库下面的某表
-- 查看权限
show grants for 用户名
-- 查看当前用户权限
show grants; 或 show grants for current_user; 或 show grants for current_user();
-- 撤消权限
revoke 权限列表 on 表名 from 用户名
revoke all privileges, grant option from 用户名 -- 撤销所有权限
-- 权限层级
-- 要使用grant或revoke,您必须拥有grant option权限,并且您必须用于您正在授予或撤销的权限。
全局层级:全局权限适用于一个给定服务器中的所有数据库,mysql.user
grant all on *.*和 revoke all on *.*只授予和撤销全局权限。
数据库层级:数据库权限适用于一个给定数据库中的所有目标,mysql.db, mysql.host
grant all on db_name.*和revoke all on db_name.*只授予和撤销数据库权限。
表层级:表权限适用于一个给定表中的所有列,mysql.talbes_priv
grant all on db_name.tbl_name和revoke all on db_name.tbl_name只授予和撤销表权限。
列层级:列权限适用于一个给定表中的单一列,mysql.columns_priv
当使用revoke时,您必须指定与被授权列相同的列。
-- 权限列表
all [privileges] -- 设置除grant option之外的所有简单权限
alter -- 允许使用alter table
alter routine -- 更改或取消已存储的子程序
create -- 允许使用create table
create routine -- 创建已存储的子程序
create temporary tables -- 允许使用create temporary table
create user -- 允许使用create user, drop user, rename user和revoke all privileges。
create view -- 允许使用create view
delete -- 允许使用delete
drop -- 允许使用drop table
execute -- 允许用户运行已存储的子程序
file -- 允许使用select...into outfile和load data infile
index -- 允许使用create index和drop index
insert -- 允许使用insert
lock tables -- 允许对您拥有select权限的表使用lock tables
process -- 允许使用show full processlist
references -- 未被实施
reload -- 允许使用flush
replication client -- 允许用户询问从属服务器或主服务器的地址
replication slave -- 用于复制型从属服务器(从主服务器中读取二进制日志事件)
select -- 允许使用select
show databases -- 显示所有数据库
show view -- 允许使用show create view
shutdown -- 允许使用mysqladmin shutdown
super -- 允许使用change master, kill, purge master logs和set global语句,mysqladmin debug命令;允许您连接(一次),即使已达到max_connections。
update -- 允许使用update
usage -- “无权限”的同义词
grant option -- 允许授予权限
MySQL用户帐号管理主要用grant(授权)和revoke(撤权)两个SQL指令来管理。这两个指令实质是通过操作user(连接权限和全局权限)、db(数据库级权限)、tables_priv(数据表级权限)、columns_priv(数据列级权限)四个权限表来分配权限的。host权限表不受这两个指令影响。下面将会详细介绍用户权限管理的内容。
GRANT语法说明:
GRANT privileges (columns) #privileges表示授予的权限,columns表示作用的列(可选) ON what #设置权限级别,全局级、数据库级、数据表级和数据列级 TO account #权限授予的用户,用"user_name"@"host_name"这种用户名、主机名格式 IDENTIFIED BY ‘password‘ #设置用户帐号密码 REQUIRE encryption requirements #设置经由SSL连接帐号 WITH grant or resource management options; #设置帐号的管理和资源(连接服务器次数或查询次数等)选项
示例:
mysql>grant all on db.* to ‘test‘@‘localhost‘ identified by ‘test‘; 上例运行后的效果是,test用户只能通过‘test’密码从本机访问db数据库 mysql>grant all on db.* to ‘test‘@‘%‘ identified by ‘test‘; 上例运行后的效果是,test用户可通过‘test’密码从任意计算机上访问db数据库。‘%’代表任意字符,‘_’代表一个任意字符。主机名部份还可以是IP地址。
如果没有给定主机部份,则默认为任意主机,也就是‘test‘和‘test‘@‘%‘是等价的。 |
Table 4.1. 访问权限表
权限 | 权限说明 |
---|---|
CREATE TEMPORARY TABLES | 创建临时数据表 |
EXECUTE | 执行存储过程(暂不支持) |
FILE | 操作系统文件 |
GRANT OPTION | 可把本帐号的权限授予其它用户 |
LOCK TABLES | 锁定指定数据表 |
PROCESS | 查看运行着的线程信息 |
RELOAD | 重新加载权限表或刷新日志及缓冲区 |
REPLICATION CLIENT | 可查询主/从服务器主机名 |
REPLICATION SLAVE | 运行一个镜像从服务器 |
SHOW DATABASES | 可运行SHOW DATABASES指令 |
SHUTDOWN | 关闭数据库服务器 |
SUPER | 可用kill终止线程以及进行超级用户操作 |
ALTER | 可修改表和索引的结构 |
CREATE | 创建数据库和数据表 |
DELETE | 删除数据表中的数据行 |
DROP | 删除数据表和数据行 |
INDEX | 建立或删除索引 |
INSERT | 插入数据行 |
REFERENCES | (暂时不支持) |
SELECT | 查询数据行 |
UPDATE | 更新数据行 |
ALL | 所有权限,但不包括GRANT。 |
USAGE | 无权限权限 |
Table 4.2. 权限作用范围(由ON子句设置)
权限限定符 | 作用范围 |
---|---|
ON *.* | 全局级权限,作用于所有数据库 |
ON * | 全局级权限,若未指定默认数据库,其作用范围是所有数据库,否则,其作用范围是当前数据库 |
ON db_name.* | 数据库级权限,作用于指定数据库里的所有数据表 |
ON db_name.tbl_name | 数据表级权限,作用于数据表里的所有数据列 |
ON tbl_name | 数据表级权限,作用于默认数据库中指定的数据表里的所有数据列 |
USAGE权限的用法:修改与权限无关的帐户项,如:
mysql>GRANT USAGE ON *.* TO account IDENTIFIED BY ‘new_password‘; #修改密码 mysql>GRANT USAGE ON *.* TO account REQUIRE SSL; #启用SSL连接 mysql>GRANT USAGE ON *.* TO account WITH MAX_CONNECTIONS_PER_HOUR 10; #设置资源
拥有WITH GRANT OPTION权限的用户可把自已所拥用的权限转授给其他用户,如:
mysql>GRANT ALL ON db.* TO ‘test‘@‘%‘ IDENTIFIED BY ‘password‘ WITH GRANT OPTION; 这样test用户就有权把该权限授予其他用户。
限制资源使用,如:
mysql>GRANT ALL ON db.* TO account IDENTIFIED BY ‘password‘ WITH MAX_CONNECTIONS_PER_HOUR 10 MAX_QUERIES_PER_HOUR 200 MAX_UPDATES_PER_HOUR 50; 允许account用户每小时最多连接20次服务器,每小时最多发出200条查询命令(其中更新命令最多为50条)
默认都是零值,即没有限制。FLUSH USER_RESOURCES和FLUSH PRIVILEGES可对资源限制计数器清零。
REVOKE语法说明:
mysql>REVOKE privileges (columns) ON what FROM account;
示例:
mysql>REVOKE SELECT ON db.* FROM ‘test‘@‘localhost‘; 删除test帐号从本机查询db数据库的权限
REVOKE可删除权限,但不能删除帐号,即使帐号已没有任何权限。所以user数据表里还会有该帐号的记录,要彻底删除帐号,需用DELETE命令删除user数据表的记录,如:
% mysql -u root -p mysql>use mysql mysql>DELETE FROM user where User=‘test‘ and Host=‘localhost‘; mysql fulsh privileges;
REVOKE不能删除REQUIRE和资源占用的配置。他们是要用GRANT来删除的,如:
GRANT USAGE ON *.* TO account REQUIRE NONE; #删除account帐号的SSL连接选项 GRANT USAGE ON *.* TO account WITH MAX_CONNECTIONS_PER_HOUR 0 MAX_QUERIES_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0; #删除account帐号的资源限制
mysql访问权限GRANT ALL PRIVILEGES ON,访问权限表
标签:创建数据库 返回 详细介绍 bsp cat resource 操作系统 添加用户 delete