MySQL用户权限及管理

一、mysql创建用户

  1、创建用户

mysql> create user test@'%' identified by '123456';                    创建了用户,但是没有任何权限
Query OK, 0 rows affected (0.00 sec)
mysql> grant all on *.* to root@'localhost' identified by '123456';    没有用户,则创建用户,用户存在,就赋予权限
Query OK, 0 rows affected (0.00 sec)

  2、删除用户

mysql> drop user test;                                              
Query OK, 0 rows affected (0.00 sec)

   3、用户的定义

    1) username@’主机域’

    2)主机域:可以理解为是MySQL登陆的白名单

    3)主机域格式:

      ’10.0.0.51’

      ’10.0.0.5%’

      ’10.0.0.%’

      ’10.0.%.%’

      ’10.%.%.%’

      ‘%’

      ‘db01’

      ’10.0.0.51/255.255.255.0’

  4、修改用户密码

[root@controller ~]# mysqladmin -uroot -p123456 password '123';                                 mysqladmin修改密码
mysql> grant all on *.* to root@'localhost' identified by '123456';                             grant修改密码
mysql> update mysql.user set password=PASSWORD('123') where user='root' and host='localhost';   update修改密码
mysql> set password= PASSWORD('123456');                                                        set修改当前登录用户密码

 二、企业中权限开通方法

  1、all和all privileges结果一样

  

   2、用户权限介绍

    MySQL的权限定义:

      作用对象:库、表

      权限

INSERT,SELECT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN,  PROCESS, FILE, REFERENCES, INDEX, ALTER,
SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, 
CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE

  

       

    

      归属

grant     all privileges    on     *.*    to   oldboy@’10.0.0.%’  identified by    ‘123’;
                权限               作用对象          归属               密码

      作用对象分解

        *.* [当前MySQL实例中所有库下的所有表]        

        wordpress.* [当前MySQL实例中wordpress库中所有表(单库级别)]           

        wordpress.user [当前MySQL实例中wordpress库中的user表(单表级别)] 

  3、企业中权限的设定

#一般给开发创建用户权限
grant select,update,delete,insert on *.* to oldboy@’10.0.0.%’ identified by ‘123’;

  4、结论

    1、如果在不同级别都包含某个表的管理能力时,权限是相加关系。

    2、但是我们不推荐在多级别定义重复权限。

    3、最常用的权限设定方式是单库级别授权,即:wordpress.*

三、MySQL连接管理

  1、连接工具

    1)MySQL自带的连接工具:mysql

复制代码

常见的特定于客户机的连接选项:
-u:指定用户          
-p:指定密码
-h:指定主机
-P:指定端口
-S:指定sock
-e:指定SQL
--protocol=name:指定连接方式

复制代码

    2)第三方的连接工具:sqlyog、navicat      

      应用程序连接MySQL:需要加载对应语言程序的API
  2、连接方式

    1)scoket连接:

mysql -uroot -poldboy123 -S/application/mysql/tmp/mysql.sock
mysql -uroot -poldboy123

    2)TCP/IP连接

mysql -uroot -poldboy123 -h10.0.0.51 -P3306

  3、当数据库服务器没有公网IP时,可用第三方工具跳转连接

    1)填写mysql所在主机内网IP

    

     2)填写可连接至数据库服务器的跳板机公网IP

    

四、MySQL启动关闭流程

  1、关闭流程图

  

    启动mysql:

/etc/init.d/mysqld start ------> mysqld_safe ------> mysqld

    关闭mysql:

/etc/init.d/mysqld stop 
mysqladmin -uroot -poldboy123 shutdown
kill -9 pid ?
killall mysqld ?
pkill mysqld ?

    kill杀死mysql容易出现的问题:

      1)如果在业务繁忙的情况下,数据库不会释放pid和sock文件

      2)号称可以达到和Oracle一样的安全性,但是并不能100%达到

      3)在业务繁忙的情况下,丢数据(补救措施,高可用)

五、MySQL实例初始化配置

  1、初始化实例拓扑图

   

       1)预编译:cmake去指定,硬编码到程序当中去

    2)在命令行设定启动初始化配置

复制代码

--skip-grant-tables 
--skip-networking
--datadir=/application/mysql/data
--basedir=/application/mysql
--defaults-file=/etc/my,cnf
--pid-file=/application/mysql/data/db01.pid
--socket=/application/mysql/data/mysql.sock
--user=mysql
--port=3306
--log-error=/application/mysql/data/db01.err

复制代码

    3)初始化配置文件(/etc/my.cnf)

     配置文件读取顺序:

/etc/my.cnf
/etc/mysql/my.cnf
$MYSQL_HOME/my.cnf(前提是在环境变量中定义了MYSQL_HOME变量)
defaults-extra-file (类似include)
~/my.cnf

     

   注意:--defaults-file:默认配置文件,如果使用./bin/mysqld_safe 守护进程启动mysql数据库时,使用了 --defaults-file=<配置文件的绝对路径>参数,这时只会使用这个参数指定的配置文件。

  优先级结论: 

  1)、命令行
  2)、defaults-file
  3)、配置文件(最后一个生效)
  4)、预编译

  2、初始化配置文件的使用

    初始化配置文件功能:

      1)影响实例的启动(mysqld)      

      2)影响到客户端(mysql、mysqldump、mysqladmin)

    如何配置初始化配置文件:

      1)配置标签分类

复制代码

[client]所有客户端程序
mysql
mysqldump

[server]所有服务器程序
mysqld
mysqld_safe

华为云,数据库企业新用户2折起,还有免费使用一至二月的机会!

网页连接

       

猜你喜欢

转载自blog.csdn.net/qq_33648367/article/details/112673969