MySQL 管理基本介绍
原因:当我们做项目开发时,可以根据不同的开发人员,赋给他相应的 MySQL
操作权限。所以,Mysql数据库管理人员(root),根据需要创建不同的用户,赋给相应的权限,供开发人员使用
MySQL 用户
- MySQL 中的用户,都存储在系统
数据库mysql
中user
表中
select Host,User,authentication_string from user;
+-----------+------------------+------------------------------------------------------------------------+
| Host | User | authentication_string |
+-----------+------------------+------------------------------------------------------------------------+
| localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | root | $A$005$~^4GR7^Mq/fmmd%&VD.vHb3d8/0n6lqGWIwkq2K1GYGFdzLyUGSVkDpUgIJA |
+-----------+------------------+------------------------------------------------------------------------+
- host:允许登录的 “位置”,localhost:表示该用户只允许本机登录,也可以指定ip地址,比如:
192.168.1.100
- user:用户名;
- authentication_string:密码,是通过
mysql
的password()
函数加密之后的密码。
-- 创建新 MySQL 用户并查询基本信息
-- 解读:'Gin' @'localhost' 表示用户的完整信息,新用户用户名为 Gin,可登录 ip 为 localhost
-- identified by 'Gin' 表示 Gin 用户的登陆密码为 Gin。但是注意,在数据库中存放的密码是加密过后的密码
create user 'Gin' @'localhost' identified by 'Gin';
select host, user, authentication_string from mysql.user;
-- +-----------+------------------+------------------------------------------------------------------------+
-- | host | user | authentication_string |
-- +-----------+------------------+------------------------------------------------------------------------+
-- | localhost | Gin | $A$005$o]wr{DcY:}\(/KY5fGyJT12pwVr7gSJTAOSOy3xgdLNPIUda8MSh0dCyA/ |
-- | localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
-- | localhost | mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
-- | localhost | mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
-- | localhost | root | $A$005$~^4GR7^Mq/fmmd%&VD.vHb3d8/0n6lqGWIwkq2K1GYGFdzLyUGSVkDpUgIJA |
-- +-----------+------------------+------------------------------------------------------------------------+
-- 删除用户
drop user 'Gin' @'localhost';
-- 修改密码:
-- 修改自己的密码
set password = password('密码');
-- 修改他人的密码(需要有修改密码权限):
set password for '用户名'@'登陆位置' = password('密码');
alter user '用户名'@'登陆位置' identified by '密码';
给用户授权
基本语法:
grant all on 库.对象名 to '用户名'@'登录位置' [identified by'密码']
说明:
- 权限列表,多个权限用逗号分开
grant select on .......
grant select,delete,create on ...….
grant all [privileges] on ..... //表示赋予该用户在该对象上的所有权限
- 特别说明
*.*
:代表本系统中的所有数据库的所有对象(表,视图,存储过程)
库.*
:表示某个数据库中的所有数据对象(表,视图,存储过程等) identified by
可以省略,也可以写出
(1)如果用户存在,就是修改该用户的密码。
(2)如果该用户不存在,就是创建该用户!
-- 演示用户权限的管理
-- 创建用户 Vodka ,密码 Vodka ,本地登录
CREATE USER 'Vodka'@'localhost' IDENTIFIED BY 'Vodka';
-- 使用 root 用户创建新数据库 testdb,建立表 news
CREATE DATABASE testdb;
USE testdb;
-- 创建表
CREATE TABLE news(
id INT,
content VARCHAR(32)
);
-- 插入一条测试数据
INSERT INTO news VALUES(100, '北京新闻');
-- 查询测试数据
SELECT * FROM news;
-- 给 Vodka 用户授予 查询(select) 和 插入(insert) news表 的权限
GRANT SELECT, INSERT ON testdb.news TO 'Vodka'@'localhost';
-- 继续赋予新权限
GRANT UPDATE ON testdb.news TO 'Vodka'@'localhost';
-- 修改 Vodka 的密码为 root
-- SET PASSWORD FOR 'Vodka'@'localhost' = PASSWORD('root');
ALTER USER 'Vodka'@'localhost' IDENTIFIED BY 'Vodka';
-- 回收 Vodka 用户在 testdb.news 表的所有权限
-- REVOKE ALL ON testdb.news FROM 'Vodka'@'localhost';
REVOKE SELECT, INSERT, UPDATE ON testdb.news FROM 'Vodka'@'localhost';
-- 删除 Vodka 用户
DROP USER 'Vodka'@'localhost';
细节
- 在创建用户的时候,如果不指定Host,则为
%
,%
表示表示所有IP都有连接权限create user XXX;
- 你也可以这样指定
create user 'xxx'@'192.168.%.%'
:表示 xxx 用户在192.168.*.*
的 ip 可以登录 mysql - 在删除用户的时候,如果host 不是
%
,需要明确指定'用户'@'host值'
-- 在创建用户的时候,如果不指定Host,则为 %,% 表示表示所有IP都有连接权限 create user XXX;
CREATE USER Sherry;
SELECT HOST,USER FROM mysql.user;
-- 你也可以这样指定 `create user 'xxx'@'192.168.%.%'`:表示 xxx 用户在`192.168.*.*` 的 ip 可以登录 mysql
CREATE USER 'Gin'@'192.168.%.%';
-- 在删除用户的时候,如果host 不是 %,需要明确指定 '用户'@'host值'
DROP USER Sherry; -- 默认就是 'Sherry'@'%'
DROP USER 'Gin'@'192.168.%.%';