Linux运维 第四阶段 (五)MySQL用户和权限管理、日志管理

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

一、用户和权限管理:

1、相关概念:

mysql用户:

类似VSFTPD虚拟用户;

密码,自己独有的加密机制,PASSWORD函数;

用户名@主机;

用户名16字符以内,主机(主机名、IP、网络地址、通配符(%,_)

--skip-name-resolve(跳过名称解析,可提高用户连接速度)

账号是用来认证的;

>RENAME USER  ‘old_name’@’host’  TO  ‘new_name’@’host;  (重命名用户)

 

》权限,授权后才能访问表(数据);

mysql自身库中的表:user,db,host,tables_priv,columns_priv,procs_priv

useruser account,globalprivileges and other non-privileges column; 全局级别(SUPER,REPLICATION SLAVE,SHUTDOWN)

dbdatabase-levelprivileges 库级权限

hostobsolete  已废弃

tables-privtable-levelprivileges  表级权限(DELETE,ALTER,TRIGGER,SELECT,INSERT,UPDATE)

columns_privcolumn-levelprivileges  列级别权限(SELECT,INSERT,UPDATE)

procs_privstored procedure andfunction privileges  存储过程和存储函数权限

proxies_privproxy-userprivileges  代理用户权限

 

mysql在启动时会读取这六张表,并在内存中生成授权表,且每执行一个SQL语句都要检查是否有权限读取或写入;

 

2>SELECT  * FROM  db\G

>CREATE TEMPORARY  TABLE  tb_name; (临时表——内存表);

USAGE (仅用作连接mysql-server和一些简单命令的使用)

触发器trigger:主动数据库(在执行某些操作时,触发已定义好的语句,如日志记录)

 

>HELP CREATE  USER  (创建用户)

>CREATE USER  ‘username’@’host’  [IDENTIFIED BY  ‘new_pw’];

>FLUSH PRIVILEGES;

 

>HELP GRANT  (给用户授权)

>GRANT privileges1,privileges2 ON [object_type]db_name.tb_name TO ‘username’@’host’ [IDENTIFIED BY ‘new_pw’]  [REQUIRE NONE|ssl_option]  [WITH with_option];

 

注:db_name.tb_namepriv_level):

*

*.*

db_name.*

db_name.tb_name

tb_name

db_name.routine_name

 

with_option

GRANT_OPTION  用户可将自己已有权限授权给其它用户,非常危险,不建议使用

|MAX_QUERIES_PER_HOUR count  每小时最多查询数

  |MAX_UPDATES_PER_HOUR count  第小时最多更新多少条

  |MAX_CONNECTIONS_PER_HOUR count  每小时可最多连接失败多少次

  |MAX_USER_CONNECTIONS count  同一个用户账号共连进多少次

 

例:>GRANT  EXECUTE  ON FUNCTION  db.abc  TO username@’%’;  (当无法判断tb_name是什么对象时使用此项,此例明确说明abc是函数,tb_name不一定都是表,也会是存储过程PROCEDURE和存储函数FUNCTION

>GRANT UPDATE  ON  jiaowu.tutors TO  ‘username’@’%’  REQUIRE SSL;  (连接时必须要以SSL建立安全连接,还可以以X509方式)

>GRANT UPDATE(Age) ON jiaowu,stu TO ‘username’@’host’;  (仅授权某字段)

>GRANT SUPER ON *.* TO ‘username’@’host’;  SUPERWITH GRANTOPTION两项要慎重授权)

 

>SHOW GRANTS FOR ‘username’@’host’;  (查看某用户权限,字段授权与库、表授权不在同一行)

 

>HELP REVOKE

>REVOKE priv1,priv2  ON  db_name.tb_name  FROM  ‘user’@’host’;

 

3、重新找回管理员密码:

#service mysqld  stop

#vim /etc/rc.d/init.d/mysqld

$bindir/mysqld_safe  --skip-grant-tables  --skip-networking   --datadir="$datadir"--pid-file="$mysqld_pid……(添加--skip-grant-tables跳过授权表和--skip-networking禁止连接网络)

#service mysqld  start

#mysql

>UPDATE mysql.user  SET  PASSWORD=PASSWORD(‘new_password’)  WHERE User=’root’;

(仅能通过手动更改user表中内容,不能用SETmysqladmin更改密码,因为授权表已跳过)

#service mysqld  stop(停止服务将/etc/rc.d/init.d/mysqld改回原来状态,重启服务即可)。

 

 

二、日志管理

1、错误日志:

服务器启动和关闭过程中的信息;

服务器运行过程中的错误信息;

事件调度器运行一个事件时产生的信息;

在从服务器上启动从服务器进程时产生的信息;

local.localdomain.err  默认在数据目录中,主机名.err

log_warnings 默认记录(0不记录|1记录)

log_err

 

2、一般查询日志:默认关闭,若开启有关数据库所有操作都记录,浪费磁盘空间,关键消耗系统资源(大量磁盘IO,任何产生IO的地方就是性能降低的地方)

general_log

general_log_file

localhost.log

log_output FILE|TABLE|NONE  (可保存至表中,注意若打开了general_log但log_output为NONE,则不会记录任何信息)

 

3、慢查询日志:生产环境下分析用,提高性能的指标

long_query_time 默认为10S

log_slow_queries等同于slow_query_log

slow_query_log_file  或更改位置要重启服务

log_output FILE|TABLE|NONE

 

>SET GLOBAL  slow_query_log=1  动态调整,永久生效要写入配置文件

 

4、中继日志:在slave-server上要执行的日志

relay-log

FIO(Fusion-IO)

IOPS:每秒执行的IO数,一般磁盘100,好的SCSI 200,SSD1000-2000

 

5、二进制日志:任何引起或可能引起数据库变化的操作,可用于复制及即时点恢复

二进制日志滚动:达到设定的上限值;>FLUSH LOGS;每重启服务;

二进制日志最好单独放在另一做了LVM的磁盘上;

格式:statement;row;mixed

事件:产生的时间(starttime);相对位置(position)

文件:索引文件mysql-bin.index、二进制日志文件如mysql-bin.000001

命令:

#mysqlbinlog mysql-bin.000001(查看二进制日志文件内容,不给选项则是文件全部内容)

--start-datetime  (格式:’yyyy-mm-dd  hh:mm:ss’

--stop-datetime (不指stop则是到文件尾部)

--start-position

--stop-position

>SHOW MASTER  STATUS;  (查看当前正在使用的二进制日志)

>SHOW BINARY  LOGS;  (查看服务器二进制日志)

>SHOW BINLOG  EVENTS  IN  ‘mysql-bin.000001’[FROM  107];  (在mysql命令行模式下查看二进制日志内容)

>PURGE BINARY  LOGS  TO  ‘mysql-bin.000005’;  (删除5之前的二进制日志文件,不包括5,不能用#rm -rf直接删除二进制日志,否则mysql会崩溃)

>FLUSH LOGS;  (仅滚动二进制日志,错误日志是关闭后再打开,在slave-server上是滚动中继日志)

 

binlog_cache_size

binlog_stmt_cache-size  调高性能可提高,但潜在的丢失的数据量也大,不建议调大

log_bin  是否启用二进制日志

sql_log_bin 用在即时点还原,还原前临时关闭写入二进制日志,恢复好后再开启

sync_binlog 设置多少次操作同步到磁盘,0不同步,此项与autocommit有关

max_binlog_cache_size  控制上限

max_binlog_size

 

6、事务日志:

事务性存储引擎来保证ACID(atomicity,consistency,isolation,durability)

事务日志可用来rollback回滚,而二进制日志是重放redo

二进制日志是用来还原数据库的,而事务日志是用来保证事务本身的可靠性

innodb_flush_log_at_trx_commit  (

0,每秒同步并执行磁盘flush操作;

1,每事务同步,并执行磁盘flush操作;

2,每事务同步,但不执行磁盘flush操作,由OS决定什么时候flush,常用此项)

innodb_log_buffer_size  内存缓冲大小,默认8M

innodb_log_file_size  日志文件大小,默认5M

innodb_log_files_in_group  默认2(高级用法:可将做成两组镜像)

innodb_log_group_home_dir

innodb_mirrored_log_groups

 

>SHOW ENGINES;

MRG_MyISAM

ARCHIVE 归档,将表归档压缩存放

CSV  利用文本文件存储表(方便移植)

MEMORY 

BLACKHOLE

注:不建议使用混合引擎,要么使用MyISAM,要么使用InnoDB

MyISAM:

不支持事务;

表锁,锁力度大,读多性能还行,读写一样多时性能会下降;

不支持外键;

BTREE索引,FULLTEXT,支持空间索引。

InnoDB:

OLTP在线事务处理;

行级锁,锁力度精细;

BTREE索引,聚簇索引,自适应hash索引;

表空间,raw磁盘设备(裸设备)



本文转自 chaijowin 51CTO博客,原文链接:http://blog.51cto.com/jowin/1683615,如需转载请自行联系原作者

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
17天前
|
存储 安全 关系型数据库
Mysql 的binlog日志的优缺点
MySQL的binlog(二进制日志)是一个记录数据库更改的日志文件,它包含了所有对数据库执行的更改操作,如INSERT、UPDATE和DELETE等。binlog的主要目的是复制和恢复。以下是binlog日志的优缺点: ### 优点: 1. **数据恢复**:当数据库出现意外故障或数据丢失时,可以利用binlog进行点恢复(point-in-time recovery),将数据恢复到某一特定时间点。 2. **主从复制**:binlog是实现MySQL主从复制功能的核心组件。主服务器将binlog中的事件发送到从服务器,从服务器再重放这些事件,从而实现数据的同步。 3. **审计**:b
|
24天前
|
Linux Shell
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
78 1
|
28天前
|
SQL 关系型数据库 MySQL
MySQL数据库,可以使用二进制日志(binary log)进行时间点恢复
对于MySQL数据库,可以使用二进制日志(binary log)进行时间点恢复。二进制日志是MySQL中记录所有数据库更改操作的日志文件。要进行时间点恢复,您需要执行以下步骤: 1. 确保MySQL配置文件中启用了二进制日志功能。在配置文件(通常是my.cnf或my.ini)中找到以下行,并确保没有被注释掉: Copy code log_bin = /path/to/binary/log/file 2. 在需要进行恢复的时间点之前创建一个数据库备份。这将作为恢复的基准。 3. 找到您要恢复到的时间点的二进制日志文件和位置。可以通过执行以下命令来查看当前的二进制日志文件和位
|
1月前
|
存储 关系型数据库 MySQL
RDS MySQL 数据库运维简述
从运维的视角,汇总云数据库RDS MySQL使用的避坑指南。文章初版,维护更新,欢迎指点。
769 3
|
1月前
|
Shell Linux C语言
【Shell 命令集合 网络通讯 】Linux 查看系统中的UUCP日志文件 uulog命令 使用指南
【Shell 命令集合 网络通讯 】Linux 查看系统中的UUCP日志文件 uulog命令 使用指南
29 0
|
1月前
|
监控 Shell Linux
【Shell 命令集合 系统管理 】Linux 自动轮转(log rotation)日志文件 logrotate命令 使用指南
【Shell 命令集合 系统管理 】Linux 自动轮转(log rotation)日志文件 logrotate命令 使用指南
51 0
|
15天前
|
关系型数据库 MySQL Linux
linux CentOS 7.4下 mysql5.7.20 密码改简单的方法
linux CentOS 7.4下 mysql5.7.20 密码改简单的方法
19 0
|
17天前
|
存储 监控 安全
Linux系统日志
【4月更文挑战第6天】Linux系统日志,关键用于记录系统状态和事件,包括内核、系统、安全和应用日志,助力管理员诊断问题、确保系统正常运行。日志管理涉及收集、分析、备份等,常用工具如rsyslog、systemd-journal和logrotate(用于日志轮转)。重视日志文件的存储管理,防止空间占用过多。
19 1
Linux系统日志
|
8天前
|
存储 关系型数据库 MySQL
Linux | MySQL基础
Linux | MySQL基础
|
8天前
|
关系型数据库 MySQL Linux
Linux联网安装MySQL Server
Linux联网安装MySQL Server
21 0