mysql 权限管理及client 连接整理

本文详细介绍了MySQL中如何创建、授权、修改和删除用户,以及如何为不同用户分配不同权限,包括权限的种类、作用范围和授权方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 不管是二进制,源码,rpm 安装, mysql 数据库远程连接 与oracle 思想上 不一致 ,如下:


首先要声明一下:一般情况下,修改MySQL密码,授权,是需要有mysql里的root权限的。

注: 用户:cifpay 用户数据库:cifpaydb

1.新建用户。

//登录MYSQL
@>mysql -u root -p
@>密码
//创建用户
mysql> insert into mysql.user(Host,User,Password) values("localhost","cifpay",password("1234"));
//刷新系统权限表
mysql>flush privileges;      --刷新系统表写入磁盘       
这样就创建了一个名为:phplamp  密码为:1234  的用户。

然后登录一下。

mysql>exit;
@>mysql -ucifpay -p
@>输入密码
mysql>登录成功

2.为用户授权。

//登录MYSQL(有ROOT权限)。我里我以ROOT身份登录.
@>mysql -u root -p
@>密码
//首先为用户创建一个数据库(cifpaydb)
mysql>create database 
cifpaydb ;
//授权cifpay用户拥有
cifpaydb 数据库的所有权限。
>grant all privileges on cifpaydb.* to cifpay@localhost identified by '1234';
  -- grant all privileges on cifpaydb.* to cifpay@'%' identified by '1234'  with grant option;   
//刷新系统权限表
mysql>flush privileges;
mysql>其它操作

/*
如果想指定部分权限给一用户,可以这样来写:
mysql>grant select,update on cifpaydb.* to user_name@localhost identified by '1234';
//刷新系统权限表。
mysql>flush privileges;
*/

撤销用户权限 

命令: REVOKE privilege ON databasename.tablename FROM 'username'@'host'; 


3.删除用户。
@>mysql -u root -p
@>密码
mysql>DELETE FROM user WHERE User="xxxx" and Host="localhost";
mysql>flush privileges;
//删除用户的数据库
mysql>drop database cifpaydb;
  ------------------------------------------------------------------------------------------------------  
 --这一步的时候, 可以通过root 登陆, 查询mysql 这个库, 查看user这张表对应的信息,然后在删除。
 # mysql -uroot  -p 
 mysql >  show databases;
 mysql >  use mysql;
 mysql >  show tables;
 mysql >  show grants;    
 mysql > select host,user, password from user;
   -------------------------------------------------------------------------------------------------------


4.修改指定用户密码。
@>mysql -u root -p
@>密码
mysql>update mysql.user set password=password('新密码') where User="user_name" and Host="localhost";
mysql>flush privileges;



5. 如果刚进入时,报错信息为。
     
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passwor:YES )
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passwor:NO)

 如果碰见以上类似报错信息, 可标明mysql.user 下的用户信息及权限不对,可以先关闭mysql 数据库服务,
  然后运行:
 mysqld_safe --user=mysql --skip-grant-tables --skip-networking &   --(用户跳过权限检查,跳过网络)
 进入后, 通过 一些查询和授权后, 推出,重启mysql服务。




6.  实例演示及详解。
  --按5 进入以后,
mysql> flush privileges;         -- 刚进入,有时不能操作,可以先刷新一下;
Query OK, 0 rows affected (0.00 sec)

-------------
mysql> GRANT ALL PRIVILEGES ON *.* TO root@'%' identified by '123456' with grant option;
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO root@'localhost' identified by '123456' with grant option;
Query OK, 0 rows affected (0.00 sec)

-------------

mysql> grant all privileges on cifpaydb.* to cifpay@'%' identified by 'cifpay' with grant option;
Query OK, 0 rows affected (0.00 sec)

mysql> grant all privileges on cifpaydb.* to cifpay@'localhost' identified by 'cifpay' with grant option;
Query OK, 0 rows affected (0.00 sec)

------------
mysql> GRANT ALL PRIVILEGES ON *.* TO 'cifpay'@'192.168.4.%' identified by 'cifpay' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.0.%' identified by '123456' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)

--------------

     -- 以上两条授权,对应的是不同的,@后面的 符号: ‘%’与 ‘localhost' 和  '192.168.x.x '  分别表示授权  所有主机名 localhost 本地,某个网段 可以连接权限:


---------------------------------client 访问授权--------------------------------------

   --MYSQL中有一张user表 保存了数据库用户信息,其中有一列叫host定义了可以访问服务器的客户端ip 让所有客户端都能访问数据库 需要执行如下

   --备注:所有客户端都可以用root访问数据库,并保留初始密码

   GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'  WITH GRANT OPTION;

   --备注:所有客户端都可以用root访问数据库,用admin作为密码

   GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'admin' WITH GRANT OPTION;


--授权:

     mysql> grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令’;

     --权限1,权限2,…权限n代表select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14个权限。
     -- 当权限1,权限2,…权限nall privileges或者 all代替表示赋予用户全部权限

     -- 当数据库名称.表名称被*.*代替 ,表示赋予 用户操作服务器上 所有数据库所有表 的权限

     -- 用户地址可以是localhost,也可以是ip地址、机器名字、域名 。也可以用’ %表示从任何地址连接

     -- ‘连接口令’不能为空,否则创建失败

--eg:
    MYSQL >grant select,insert,update,delete,create,drop on cifpay.emp dominic@'172.16.10.1' identified by '123';
    --给来自172.16.10.1的用户dominic 分配可对数据库cifpay的 emp表进行select,insert,update,delete,create,drop等操作的权限,并设定口令为123。





7.实例。

1. 新增用户

MYSQL > insert into mysql.user(Host,User,Password) values("localhost","dominic",password("hello123"));
MYSQL > flush privileges;

2. 修改用户密码

MYSQL > update mysql.user set password=password('new password') where User="dominic" and Host="localhost";
MYSQL > flush privileges;

3. 删除用户

MYSQL > DELETE FROM user WHERE User="dominic" and Host="localhost";
MYSQL > flush privileges;

4. 权限分配

  -- grant用法
           grant 权限 on 数据库.* to 用户名@'登录主机' identified by '密码';     --/*  with grant option */  详解如下;

   代码如下:

      权限:

         常用总结, ALL/ALTER/CREATE/DROP/SELECT/UPDATE/DELETE
      数据库:
         
*.*                    表示所有库的所有表
          test.*                表示test库的所有表
          test.test_table  表示test库的test_table表      
      用户名:
         mysql账户名
      登陆主机:
         允许登陆mysql server的客户端ip
          '%'表示所有ip
          'localhost' 表示本机
          '192.168.10.2' 特定IP
     密码:
          账户对应的登陆密码


 -------------------------------------- 整理完 --------------------------------------------



附表:在MySQL中的操作权限 

ALTER Allows use of ALTER TABLE.
ALTER ROUTINE Alters or drops stored routines.
CREATE Allows use of CREATE TABLE.
CREATE ROUTINE Creates stored routines.
CREATE TEMPORARY TABLE Allows use of CREATE TEMPORARY TABLE.
CREATE USER Allows use of CREATE USERDROP USERRENAME USER, and REVOKE ALL PRIVILEGES.
CREATE VIEW Allows use of CREATE VIEW.
DELETE Allows use of DELETE.
DROP Allows use of DROP TABLE.
EXECUTE Allows the user to run stored routines.
FILE Allows use of SELECT..INTO OUTFILE and LOAD DATA INFILE.
INDEX Allows use of CREATE INDEX and DROP INDEX.
INSERT Allows use of INSERT.
LOCK TABLES Allows use of LOCK TABLES on tables for which the user also has SELECT privileges.
PROCESS Allows use of SHOW FULL PROCESSLIST.
RELOAD Allows use of FLUSH.
REPLICATION Allows the user to ask where slave or master
CLIENT servers are.
REPLICATION SLAVE Needed for replication slaves.
SELECT Allows use of SELECT.
SHOW DATABASES Allows use of SHOW DATABASES.
SHOW VIEW Allows use of SHOW CREATE VIEW.
SHUTDOWN Allows use of mysqladmin shutdown.
SUPER Allows use of CHANGE MASTERKILLPURGE MASTER LOGS, and SET GLOBAL SQL statements. Allows mysqladmin debug command. Allows one extra connection to be made if maximum connections are reached.
UPDATE Allows use of UPDATE.
USAGE Allows connection without any specific privileges.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值