mysql安全值守数据库常用语句

本文详细介绍了MySQL中的用户权限设置,包括用户创建、删除和授权。接着讨论了元数据查询,如服务器版本、数据库信息和配置变量。此外,讲解了UNION查询的用法,以及如何合并多个查询结果。还提到了分组查询中的GROUP_CONCAT函数,以及一些常用的字符串函数,如lower、upper等。最后,文章阐述了MySQL数据库的导入导出方法,包括表数据的TXT文件操作和使用mysqldump工具。

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

1.用户权限设置

mysql中用户如何定义

用户名@主机域

有以下几种表示方式:
1. 10.0.0.51
2. 10.0.0.%
3. %
4. 10.0.0.0/255.255.255.0
5. Db01
6. Localhost
7. 127.0.0.1

  • 用户创建
create user 321@'%'identified by '123';
  • 用户删除
drop user username;
username:删除的用户名


权限分为

  • 全局:可以管理整个MySQL

  • 库:可以管理指定的数据库

  • 表:可以管理指定数据库的指定表

  • 字段:可以管理指定数据库的指定表的指定字段

  • 查看用户权限赋予情况

show grants for xinjing@'%'

  • 用户授权
grant  all privileges on stu.* to ‘xinjing’@’%’ identified by123with option;//授权给xinjing在stu库中所有表的所有权限并且还拥有给其他用户授权的权利
revoke all privileges on stu.* from 'xinjing'@'%'; //取消授权


2.元数据查询

Select version();服务器版本信息
Select database();当前数据库名
Select user():当前用户名
Show status;服务器状态
Show variables;服务器配置变量
Show global variables like ‘%datadir%‘:看数据文件存放位置
show global variables like ‘%datadir%’; 看数据文件存放位置
select @@datadir; 查询数据库的路径
select @@basedir 查询mysql的安装路径

3.union查询详解

把2条或者多条SQL语句的查询结果合并成一个结果集

  • 比如:sql1: N行,sql2: M行,sql1 union sql2 —> N+M行
mysql> select * from temp1;
+-----+-------+
| uid | uname |
+-----+-------+
|   1 | haha  |
|   2 | xixi  |
|   3 | hehe  |
+-----+-------+
3 rows in set (0.00 sec)

mysql> select * from temp2;
+-----+-----+
| eid | age |
+-----+-----+
|   1 |  21 |
|   2 |  20 |
|   3 |  14 |
+-----+-----+
3 rows in set (0.00 sec)

mysql> select * from temp1 union select * from temp2;
+-----+-------+
| uid | uname |
+-----+-------+
|   1 | haha  |
|   2 | xixi  |
|   3 | hehe  |
|   1 | 21    |
|   2 | 20    |
|   3 | 14    |
+-----+-------+
6 rows in set (0.00 sec)

mysql> select * from temp1 union select  1,2;
+-----+-------+
| uid | uname |
+-----+-------+
|   1 | haha  |
|   2 | xixi  |
|   3 | hehe  |
|   1 | 2     |
+-----+-------+
4 rows in set (0.00 sec)
mysql> select * from temp1 union select  12,2;
+-----+-------+
| uid | uname |
+-----+-------+
|   1 | haha  |
|   2 | xixi  |
|   3 | hehe  |
|  12 | 2     |
+-----+-------+
4 rows in set (0.00 sec)
  • 要求结果集中的列数一致就可以。一般就是2列或者多列

4.分组查询展示

GROUP_CONCAT()

  • 是将分组中括号里对应的字符串进行连接.如果分组中括号里的参数xxx有多行,那么就会将这多行的字符串连接,每个字符串之间会有特定的符号进行分隔。
  • 格式:

group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator '分隔符'] )

select sid,group_concat(cid),group_concat(cj order by cj desc SEPARATOR ' ') from score
group by sid

5.字符串函数

函数作用
lower(column str)将字符串全部转化为小写
upper(column str)将字符串全部转化为大写
concat(str1,str2)将多个字符串首尾相连后返回
concat_ws(separator,str1,str2)将多个字符串指定连接符separator的首尾相连后返回
substr(str,pos,[,len])从字符串中的指定位置pos开始取一个字串返回
length(str)返回字符串的存储长度
char_length(str)返回字符串的字符个数
mysql> select lower("ABcd");
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    14
Current database: sys

+---------------+
| lower("ABcd") |
+---------------+
| abcd          |
+---------------+
1 row in set (0.01 sec)

mysql> select upper("ABcd");
+---------------+
| upper("ABcd") |
+---------------+
| ABCD          |
+---------------+
1 row in set (0.00 sec)

mysql> select concat('abc','123');
+---------------------+
| concat('abc','123') |
+---------------------+
| abc123              |
+---------------------+
1 row in set (0.02 sec)

mysql> select concat_ws(':','abc','123');
+----------------------------+
| concat_ws(':','abc','123') |
+----------------------------+
| abc:123                    |
+----------------------------+
1 row in set (0.00 sec)

mysql> select substr('hello',2,3);
+---------------------+
| substr('hello',2,3) |
+---------------------+
| ell                 |
+---------------------+
1 row in set (0.00 sec)

mysql> select substr('hello',2,1);
+---------------------+
| substr('hello',2,1) |
+---------------------+
| e                   |
+---------------------+
1 row in set (0.00 sec)

mysql> select length('hello');
+-----------------+
| length('hello') |
+-----------------+
|               5 |
+-----------------+
1 row in set (0.00 sec)

mysql> select char_length('hello');
+----------------------+
| char_length('hello') |
+----------------------+
|                    5 |
+----------------------+
1 row in set (0.00 sec)

6.mysql数据库导入导出

  • 表数据导入导出
    • 导出TXT文件(有漏洞,mysql已经封了)
select * from demo1 into outfile '/temp/utemp1data.txt';
use student;
show VARIABLES like "secure_file_priv";

mysql> show VARIABLES like "secure_file_priv";
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| secure_file_priv | NULL  |
+------------------+-------+
1 row in set, 1 warning (0.00 sec)
可以看到没有权限
  • 导出TXT文件
oad data local infile '/root/utemp1data.txt' into table temp;
  • 数据库导入导出
    –mysqldump导出
    – dump出表utemp1
    – mysqldump -uroot -p student utemp1>utemp1.sql
    – dump出库student
    – mysqldump -uroot -p student>student.sql
    – dump所有的数据库及数据库表
    – mysqldump -u root -p --all-databases>mysqldatabases.sql;

– mysql的数据库导入"<"
– 新建一个数据库
create database dumpdemo1
– 回到mysql接口
– mysql -u root -p654321 dumpdemo1<student.sql
– 进入mysql验证
use dumpdemo1
show tables;

– mysql的数据库导入 “source”
mysql -u root -p
create database sourcedumpdemo;
source /var/lib/mysql-files/student.sql

### Windows 环境下 MySQL 数据库备份与还原 #### 使用 `mysqldump` 工具进行备份 为了在 Windows 下备份 MySQL 数据库,最常用的方法之一是利用 `mysqldump` 命令行工具。此命令能够创建逻辑备份副本,即 SQL 脚本文件,其中包含了重建原始数据库所需的所有指令。 ```bash mysqldump -u root -p demo > "D:\mysql_backup\backup_demo_20231019.sql" ``` 上述命令会提示输入密码,并将名为 `demo` 的数据库导出到指定路径下的 `.sql` 文件中[^1]。 对于希望一次性完成全部数据库的保存工作,则可以通过下面这条语句实现: ```bash mysqldump -u root -p --all-databases > "D:\mysql_backup\all_databases_backup.sql" ``` 这将会把服务器上的每一个单独存在的 schema 都记录下来并存入单一文档内[^2]。 #### 执行数据恢复操作 当需要从之前制作好的 `.sql` 文件重新加载数据时,在 Windows 平台上同样依赖于 MySQL 客户端程序来进行导入作业。有两种方式可供选择: - **直接通过命令行管道传输** ```bash mysql -u root -p demo < "D:\mysql_backup\backup_demo_20200814.sql" ``` 此处假设已经存在同名的目标 database;如果没有的话,应该先手动建立它再继续后续步骤。 - **登录至 MySQL 后读取外部脚本** 另一种做法是在启动交互式的 shell 终端之后,采用 source 关键字指向本地磁盘位置来运行批量处理任务: ```sql USE demo; SOURCE D:/mysql_backup/backup_demo_20200814.sql; ``` 值得注意的是,无论是哪种途径都要求使用者具备足够的访问权限以及确保所使用的字符集编码一致以防止乱码现象的发生[^3]。 #### 设置自动化的定期备份计划 考虑到手工执行这些过程较为繁琐且容易遗忘,因此建议设置周期性的无人值守型维护流程。借助 Windows 自带的任务调度器 (Task Scheduler),可以轻松安排特定时间间隔触发相应的批处理 (.bat) 或者 PowerShell (.ps1) 脚本来达成目的。 例如编写简单的 .bat 文件内容如下所示: ```batchfile @ECHO OFF SET BACKUP_PATH=D:\mysql_backup\ SET DATESTAMP=%DATE:~10,4%%DATE:~4,2%%DATE:~7,2% mysqldump -u root -p demo > "%BACKUP_PATH%backup_demo_%DATESTAMP%.sql" ``` 该脚本会在每次调用的时候自动生成带有日期标记的新版本备份档案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Edison.W

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值