1. 程式人生 > >MySQL數據庫的用戶管理、數據庫備份與恢復

MySQL數據庫的用戶管理、數據庫備份與恢復

sql 創建 user 新建 目錄 數據庫系統 指定 username 目前

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 #使用命令恢復

  • 表的恢復和庫的恢復一致,只需註意先要進到表存放的庫裏面即可。

MySQL數據庫的用戶管理、數據庫備份與恢復