MySQL数据库的用户管理、数据库备份与恢复

MySQL 是一个真正的多线程、多用户的 SQL 数据库服务,凭借其高性能、高可靠和易于使用的特性,成为服务器领域中最受欢迎的开源数据库系统。在2008年以前,MySQL 项目由 MySQL AB 公司进行开发、发布和支持,之后历经 Sun 公司收购 MySQL AB 公司,Oracle 公司收购 Sun 公司的过程,目前 MySQL 项目由 Oracle 公司负责运营和维护。

MySQL 数据库的用户管理

  • 新建用户
    mysql -u root -p ##登录数据库
    use mysql; ##进入mysql数据库(所有创建的用户都保存在mysql数据库的user表中)
    CREATE USER 'username'@'host' IDENTIFIED BY 'password';
    #其中host是指定用户可以在哪些主机登录,可使用 IP地址、网段、主机名的形式,
    #本地用户可用 localhost ,任意远程主机登录可以用通配符 %

  • 查看用户
    use mysql;
    select User,authentication_string,Host from user;

  • 删除用户
    DROP USER 'username'@'host';

  • 重命名用户
    RENAME USER 'old_user'@'host' TO 'new_user'@'host';

  • 修改用户密码
    SET PASSWORD=PASSWORD('password'); #修改当前用户密码,括号内为新密码
    SET PASSWORD for 'username'@'host'=PASSWORD('password'); #修改其他用户的密码

  • 忘记 root 用户密码的解决办法
    1: 停止mysql服务进程
    systemctl stop mysqld.service #关闭mysql服务
    netstat -ntap | grep 3306 #确保mysql进程关闭

    2: 跳过用户列表 user 验证,使用户可以不使用密码直接登录
    mysqld --skip-grant-tables

    3: 重新打开一个终端,使用mysql直接登录到数据库
    mysql #直接进入数据库
    update mysql.user set authentication_string=password('password') where user='root'; #修改root密码

    4: 刷新数据库,使用新密码登录root用户
    flush privileges; #刷新数据库
    mysql -u root -p #使用新密码登录

  • 授权管理
    GRANT 权限列表 ON 库名.表名 TO 'username'@'host' IDENTIFIED BY 'password';

数据库的备份及恢复

MySQL数据库备份

  • 使用 tar 打包文件夹备份
    1) 安装 xz 压缩格式工具
    #yum install xz -y
    2) 打包数据库文件,默认存放在安装目录的 data 文件夹
    #tar Jcvf /opt/mysql-$(data +%F).tar.xz /usr/local/mysql/data
    3) 如果数据库文件损坏,可以解压缩备份文件
    #tar Jxvf /opt/mysql-2018-07-30.tar.xz /usr/local/mysql/data
    4)我们可以使用计划性任务来自动对数据库进行备份并定期删除之前打包的数据库文件

  • 使用 mysqldump 工具备份

    mysqldump -u root -p [密码] [选项] [数据库名] [数据表名] > /备份路径/备份文件名

  1. 对库 test 中的表 test_1、test_2进行备份
    #mysqldump -u root -p123456 test test_1 test_2 > /opt/dump.sql

  2. 对整个 test 库进行备份
    #mysqldump -u root -p123456 test > /opt/test.sql

  3. 对多个库进行备份(test库、word库)
    #mysqldump -u root -p123456 --databases test word > /opt/test_word.sql

  4. 对所有库进行备份
    #mysqldump -u root -p123456 --all-databases > /opt/all.sql

  5. 直接备份表结构(test库中的test_1、test_2表)
    #mysqldump -u root -p123456 -d test test_1 test_2 > /opt/tables.sql

恢复数据库

  • 登录 mysql 恢复
    drop database test; #删除损坏的test库
    source /opt/test.sql;

  • 使用mysql命令恢复
    drop database test; #删除test库
    create database test; #必须先创建test库,否则会报错
    exit; #退出数据库
    mysql -u root -p123456 test < /opt/test.sql #使用命令恢复

  • 表的恢复和库的恢复一致,只需注意先要进到表存放的库里面即可。

猜你喜欢

转载自blog.51cto.com/13625676/2152203