用户以及赋权还有备份数据库

创建用户

1. CREATE USER 用户名@地址 IDENTIFIED BY [PASSWORD] 密码(字符串);
2. CREATE USER 'tom'@'localhost' IDENTIFIED BY '12345678';
3. create user 'lisi'@'%' identified by 'lisi@123';
4. # MySQL中的用户由两部分构成
5. username 例如: root
6. host 例如: localhost (本机)、192.168.8.20、192.168.8.%、%

8.'tom'@'localhost' 和 'tom'@'%' 主机名不同,不是同一个用户

登录用户:

mysql  -u用户名 -p  -hIP地址

mysql -ulily -p12345678 -h192.168.8.100

删除用户

drop user 用户名@'%';
drop user 用户名@localhost;

# 或者
use mysql;
delete from user where user="用户名";

修改用户名

rename user '旧的用户名'@'旧的ip地址'  to '新的用户名'@'新的ip地址'

rename user 'admin1'@'%'  to 'lily'@'192.168.8.%';

查看所有的用户

use mysql
select user,host form user;

修改密码

root 修改自己的密码
set password = password (' 密码 ');
修改其他用户的密码
SET PASSWORD FOR 'tom'@'%' = PASSWORD ( '12345678' );
set password for 'tom'@'%' = '12345678';

# MySQL8.x,修改密码
alter user '用户'@'地址' identified by '密码';
ALTER USER 'tom'@'%' IDENTIFIED BY '12345678';

 FLUSH PRIVILEGES;  
 # 重启

 

给用户设置权限

show grants;

查看当前用户权限

show grants for admin@localhost;

查看其他 MySQL 用户(admin)权限

revoke 撤销权限

* all       除了授权之外的所有权限
* select    查询表内容的权限
* update    修改表内容权限
* insert    在表中添加内容的权限
* delete    删除表中内容的权限
GRANT ALL PRIVILEGES ON school.* TO "tom"@"%";

 grant 权限列表 on 库.表 to '用户'@'地址';  
 
 GRANT ALL PRIVILEGES ON school.* TO "tom"@"%";  
 
 grant select,update,insert,delete *.* to 'zhangsan'@'192.168.8.%';  
 
grant select on *.* to admin1@localhost; -- admin1
  授权查询在所有*库*表的权限给admin1
 可以查询 MySQL 中所有数据库中的表
 
 grant select on admindb.* to admin@localhost;  -- admin 
 授权 查询 在admindb的库里的所有表给admin用户
 可以查询 admindb中的表
 
 grant select(id, name, age) on admindb.goods_log to admin@localhost;
 授权查询id,name,age,数据库admindb里名为goods_log的表,给用户admin
 
 函数、存储过程与授权的关系,本质是数据库通过权限控制,确保用户只能合法地使用这些预定义程序,既保证业务需求,又防止滥用。具体关联是
授权是使用函数 / 存储过程的前提
通过授权实现 “间接操作”,提升安全性
权限粒度可精确到单个程序
权限继承与回收

备份数据库

选项
option	含义
-u	用户名
-p	密码
-h	服务器 ip, localhost 默认
-p	连接端口, 3306 默认
输出选项
option	含义
-n	剔除数据库创建语句(只保存数据库数据)
-t	剔除数据表创建语句 (只保存表数据)
-d	剔除数据(只保存结构)
-T	生成两文件,一个. sql 表结构,一个. txt 数据文件非 insert(备份双份)

查看 MySQL 信任的导出路径
show variables like 'secure_file_priv'
# var/lib/mysql-file/
导出
mysqldump -uroot -proot123 -T /var/lib/mysql-files/ db_name file_name
1. 备份单个数据库
如果你想备份名为testdb的数据库,假设 MySQL 用户名是root,密码是password,可以在命令行中执行以下命令:
mysqldump -u root -p password testdb > backup_testdb.sql
-u root:指定连接 MySQL 服务器的用户名是root。
-p password:指定用户密码
testdb:是要备份的数据库名称。
> backup_testdb.sql:将备份结果输出到名为backup_testdb.sql的文件中
2. 备份整个 MySQL 服务器上的所有数据库
要备份所有数据库,使用以下命令:
mysqldump -u root -p --all-databases > all_databases_backup.sql
或者
mysqldump -u root -p -A > all_databases_backup.sql
这里--all-databases或-A选项表示备份所有数据库。
3. 备份指定数据库中的特定表
如果只想备份testdb数据库中的users表和orders表,可以执行:
mysqldump -u root -p testdb users orders > backup_testdb_tables.sql
4. 恢复备份
当需要从备份文件恢复数据时,可以使用mysql命令。假设要将之前备份的backup_testdb.sql恢复到testdb数据库中,先登录 MySQL:
mysql -u root -p
然后在 MySQL 命令行中选择目标数据库:
USE testdb;
最后执行恢复操作:
SOURCE /path/to/backup_testdb.sql;
source /path/to/backup_testdb.sql;
source +路径
这里/path/to/需要替换为备份文件实际所在的路径。
mysqlimport -uroot -p12345 db_name /var/file_name.txt
也是恢复备份,把db_name导出到后面路径
5. 其他常用选项
指定服务器 IP 和端口:如果 MySQL 服务器不在本地,或者端口不是默认的 3306,可以使用以下方式:
mysqldump -u root -p -h 192.168.1.100 -P 3307 testdb > backup_testdb.sql
其中-h 192.168.1.100指定服务器 IP,-P 3307指定端口。
忽略某些表:如果在备份数据库时,想忽略某些表,可以使用--ignore-table选项,例如:
mysqldump -u root -p testdb 
--ignore-table=testdb.logs --ignore-table=testdb.temp
> backup_testdb_except.sql
忽略test下面的logs和temp
这条命令会备份testdb数据库,但会忽略logs表和temp表。

数据库备份

  • 为了防止数据丢失、方便数据迁移,建议定期备份数据中的数据。

  • 方式:

    • 逻辑备份:将数据库中库和表转换为SQL语句,生成sqql文件。还原数据时只需要运行改SQL语句。适合中小规模的数据,30GB以内数据。数据量过大时,转换效率慢。

    • 物理备份:将数据库的data目录,直接复制备份。

      • 冷备份:关闭MySQL—Server后进行的备份
      • 热备份:使用专业的数据备份工具,在服务运行中备份。
      • 全量备份:每次备份都备份所有数据。
      • 增量备份(差异备份):之备份新增的数据或不一样的数据
# 冷备份
systemctl stop mysql
关机
mkdir -p /bak/2025/8/11/
创存放数据的文件
cp -r /usr/local/mysql/data  /bak/2025/8/11/data
复制
systemctl start mysql
开机

# 还原
systemctl stop mysql
关机
rm -rf /usr/local/mysql/data
删除
cp -r  /bak/2025/8/11/data  /usr/local/mysql/
复制(恢复)
chown mysql.mysql -R /usr/local/mysql/data
把mysql权限重回给mysql(因为上面复制后可能更改所有人为root)
systemctl start  mysql
开机
  • 物理热备:
    • Xtrabackup:percona 免费的数据热备工具。
    • Hotbackup:收费版数据热备工具。
删除超过一周的备份及自动备份数据库的方式会因操作系统及具体数据库类型有所不同。下面以常见的 MySQL 和 PostgreSQL 数据库为例,为你介绍相关实现方法:
删除超过一周的备份
在 Windows 系统中
若为 MySQL 数据库,可用 forfiles 命令删除超一周的备份文件。像备份文件保存在 C:\mysql_backups 目录时,创建 .bat 文件写入以下内容并执行即可:
forfiles /p "C:\mysql_backups" /d -7 /c "cmd /c del @file"
在 Linux 系统中
借助 find 命令识别并删除符合条件的文件。例如,PostgreSQL 备份文件在 /beifen/zhujian/all/ 目录,文件名以 zj-beifen 开头,可创建脚本如 delete_zhujian.sh 来删除旧备份:
find /beifen/zhujian/all/ -name "zj-beifen*" -mtime +7 -exec rm -rf {} \;
针对 MySQL 备份在 /tmp/mysqlbackup 目录的场景,删除脚本命令可写为:
find /tmp/mysqlbackup/ -mtime +7 -exec rm -f {} \;
自动备份数据库
MySQL 数据库
Windows 环境:编写备份脚本 .bat 文件,内容可参考:
plaintext
set TIMESTAMP=%date:~-4,4%_%date:~-10,2%_%date:~-7,2%_%time:~0,2%_%time:~3,2%_%time:~6,2%
set MYSQL_USER=root
set MYSQL_PASSWORD=yourpassword
set DATABASE_NAME=your_database
set BACKUP_PATH=C:\mysql_backups
mysqldump -u %MYSQL_USER% -p%MYSQL_PASSWORD% %DATABASE_NAME% > %BACKUP_PATH%\%DATABASE_NAME%_%TIMESTAMP%.sql
然后,通过 “任务计划程序” 创建基本任务,按提示设定定时运行该 .bat 文件的周期与时刻。
Linux 环境:创建 backup.sh 备份脚本,示例代码如下:
plaintext
#!/bin/bash
date=$(date +"%Y%m%d")
backup_filename="db_backup_${date}.sql"
backup_path="/home/your_username/backups"
mysqldump -u your_username -p your_password --all-databases > $backup_path/$backup_filename
并通过 chmod +x backup.sh 赋予其执行权限。再用 crontab -e 编辑定时任务,若想每天凌晨 3 点 30 分备份,可添加:
30 3 * * * /bin/bash /home/your_username/backup.sh
PostgreSQL 数据库
通常在 Linux 下利用 pg_dump 与 cron 定时任务配合。先创建备份脚本,如备份 postgres 数据库至 /beifen/zhujian/all 目录的脚本内容可为:
plaintext
echo "开始执行 PostgreSql 数据库 postgres 的备份!nowtime=$(date +%F+%T)"
/usr/local/postgresql/bin/pg_dump --file "/beifen/zhujian/all/zj-beifen-"$nowtime".backup" --host "192.168.1.163" --port "5432" --username "postgres" "postgres" --verbose --role "postgres" --format=c --blobs --encoding "UTF8"
echo "数据库 postgres 备份结束!"

保存后用 chmod +x 赋予权限。之后 crontab -e 设置定时任务,例如每天 23 点备份,添加配置:
0 23 * * * /beifen/zhujian/对应的备份脚本文件名.sh

1

posted @ 2025-08-11 20:26  秀妍泽  阅读(12)  评论(0)    收藏  举报