数据库常用命令

MYSQL :

1.进入数据库

mysql -u root -p
设置密码
update user set authentication_string=password(“xxxxxx”) where user=”root”;

2.查看数据库列表信息

show databases;
查看当前数据库

select database();

3.创建两个数据库,一个名为自己姓名首字母,一个名为老师名字首字母的数据库

CREATE DATABASE IF NOT EXISTS lgp;
使用数据库
USE lgp;
CREATE DATABASE IF NOT EXISTS dsj;
USE dsj;

4.使用SHOW语句来查看已经存在的数据库

SHOW DATABASES;

5.查看用自己姓名创建数据库的信息

SHOW CREATE DATABASE lgp;

6.修改名为自己数据库的字符集为gbk

ALTER DATABASE lgp CHARACTER SET utf8;

SQL Server:

1.使用数据库账户和密码登录sqlserver服务器

sqlwb -S servername或IP -U username -P password
###2.查看and使用数据库
select * from sysdatabases;
use 数据库名;

3.查看所有的表

select * from sysobjects where xtype=’U’;

4.额外

备份数据库

backup database 数据库名 to disk=’D:\数据库名.bak’;
还原数据库
restore database 数据库名 from disk=’d:\数据库名.bak’;
删除数据库
drop database 数据库名;

查看数据库安全审计相关命令

mysql日志类型

查询日志

MySQL中的查询日志保存在文本文件中,能够记录MySQL中的所有数据操作。
路径:/data/mysql/log/general_log/general_statement.log
###慢日志
慢查询日志主要用来记录执行时间超过设置的某个时长的SQL语句,能够帮助数据库维护人员找出执行时间比较长、执行效率比较低的SQL语句,并对这些SQL语句进行针对性优化。
路径:/data/mysql/log/query_log/slow_statement.log
###错误日志
MySQL的错误日志中记录了MySQL运行过程中的所有出错信息,查看MySQL的错误日志能够帮助数据库维护人员更好地排查MySQL服务器的故障。
路径:/data/mysql/log/error_log/mysql-error.log
###二进制日志
二进制日志中以“事件”的形式记录了数据库中数据的变化情况,对于MySQL数据库的灾难恢复起着重要的作用。
路径:/data/mysql/log/bin_log/mysql-bin

log_bin:表示开启二进制日志。如果没有为此项赋值,则MySQL会在DATADIR选项指定的目录(MySQL的数据存放目录)下创建二进制文件。
binlog_format:二进制文件的格式。取值可以是STATEMENT、ROW和MIXED。
binlog_cache_size:二进制日志的缓存大小。
max_binlog_cache_size:二进制日志的最大缓存大小。
max_binlog_size:单个二进制日志文件的最大大小,当文件大小超过此选项配置的值时,会发生日志滚动,重新生成一个新的二进制文件。
expire_logs_days:二进制日志的过期时间。如果配置了此选项,则MySQL会自动清理过期的二进制日志。此选项的默认值为0,表示MySQL不会清理过期日志。

Mysql启用审计:

1. 启用MySQL的审计日志记录功能,并将日志输出到表中,以便查询和分析。

SET GLOBAL log_output = ‘TABLE’;

2.启用一般的查询记录功能,将所有的查询操作记录到日志中。

SET GLOBAL general_log = 1;
SET general_log_file = /data/mysql/log/general_log/general_statement.log
general_log:表示是否开启查询日志。此项设置为1或者不带任何值,都可以开启查询日志;设置为0或者在my.cnf文件或my.ini文件中没有配置此项,则不会开启查询日志。
general_log_file:查询日志的文件目录,笔者这里配置的是日志的完整路径。
log_output:表示日志的存储方式,可以有3种取值,TABLE表示将查询日志存储到数据表中;FILE表示将查询日志保存到文件中;NONE表示不保存日志信息到数据表和文件中。

3.启用慢查询日志,记录所有超过指定时间的查询操作。

SET GLOBAL slow_query_log = 1;

4.设置日志速率限制,限制每秒钟记录数据库操作记录和日志的数量。

SET GLOBAL log_rate_limit = 100;

Mysql查询审计状态:

1.查询用户登录信息

SQL语句:SELECT username,login_time, login_ip FROMuser_login_history;
应用︰通过查询用户登录历史记录,审计员可以了解用户的登录习惯、登录时间和登录IP地址,发现异常登录行为。

2.查询用户权限

SQL语句:SELECT username, role FROM user_roles;
应用︰审计员可以通过查询用户角色表,验证用户是否具有正确的权限,以防止未经授权的访问和数据泄露。

3.检查数据库备份

SQL语句: SELECT backup_name,backup_time FROMbackup_history;
应用︰审计员可以检查数据库备份历史记录,确保数据库定期备份和备份文件的完整性,以防止数据丢失或灾难恢复。

4. 查看MySQL的审核日志配置参数,如审核日志文件的位置,以及日志是否开启等。

SHOW GLOBAL VARIABLES LIKE ‘audit_log%’;

5. 查询MySQL中的审核日志表,以查看数据库的操作记录。

SELECT * FROM mysql.audit_log;

6.查看MySQL服务器的运行时间,以确定日志记录的持续时间和可用性

SHOW GLOBAL STATUS LIKE ‘Uptime’;

7.查询敏感数据访问日志

SQL语句:SELECT username, accessed_table,accessed_timeFROM sensitive_data_access_logs;
应用∶审计员可以通过查询敏感数据访问日志,跟踪和监控对敏感数据的访问情况,发现未经授权的数据访问行为

8.检查密码策略

SQL语句:SELECT * FROM password_policy;
应用︰审计员可以查询密码策略表,验证密码复杂度、密码过期时间和账户锁定策略等是否符合安全标准。

9.查询系统日志

SQL语句:SELECT log_time, log_message FROM system_logs;
应用︰审计员可以查看系统日志,了解系统的运行状态、异常事件和错误信息,及时发现和解决问题。

10.检查访问控制列表

SQL语句:SELECT * FROM access_control_list;
应用∶审计员可以查询访问控制列表,验证系统资源的访问权限是否正确配置,防止未经授权的访问和滥用。

11.查询异常登录尝试

SQL 语句:SELECT username,login_time,login_ip FROMlogin_attempts WHERE status = ‘failed’;
应用︰通过查询登录尝试表,审计员可以发现异常登录尝试,如频繁失败的登录尝试、来自不可信IP地址的尝试等。

12.检查数据修改历史

SQL语句: SELECT username,table_name,operation,modify_time FROM data_change_history;
应用︰通过查询数据修改历史记录,审计员可以了解数据的修改情况,及时发现和追踪数据被篡改

13.查询安全漏洞扫描结果

SQL语句:SELECT vulnerability_name, severity,remediationFROM vulnerability_scan_results;
应用︰审计员可以查询安全漏洞扫描结果,了解系统存在的安全风险和漏洞,并采取相应的补救措施。

14.查询用户的各个层级的权限

查看某用户的系统权限

SELECT * FROM pg_roles WHERE rolname=’usename’;
查看某用户的表权限
select * from information_schema.table_privileges where grantee=’usename’;
查看某用户的usage权限
select * from information_schema.usage_privileges where grantee=’usename’;
查看某用户在存储过程函数的执行权限
select * from information_schema.routine_privileges where grantee=’usename’;
查看某用户在某表的列上的权限
select * from information_schema.column_privileges where grantee=’usename’;
查看当前用户能够访问的数据类型
select * from information_schema.data_type_privileges ;
查看用户自定义类型上授予的USAGE权限
select * from information_schema.udt_privileges where grantee=’usename’;