代码之家  ›  专栏  ›  技术社区  ›  Bobby B

使用mysqldump和数据库用户

  •  32
  • Bobby B  · 技术社区  · 14 年前

    我正在尝试将mysqldump所需的所有选项组合到一个脚本中,以创建应用程序数据库使用的所有内容。这包括数据库本身和所有数据库用户/密码/权限。

    我已经解决了所有问题,除了用户文章…以下是我当前使用的:

    mysqldump -h host -u root -p \
        --add-drop-database --routines -B database_name > backup.sql
    

    那么,我错过了什么?

    4 回复  |  直到 7 年前
        1
  •  43
  •   superjos    11 年前

    数据库用户/密码/权限保存在 mysql 数据库,不会被dump命令转储。您必须将该数据库以及要转储的DBS列表中添加:

    mysqldump ... --routines --databases database_name mysql > backup.sql
    

    或者把所有东西都扔掉:

    mysqldump ... --routines --all-databases > backup.sql
    
        2
  •  23
  •   Markus T Alexander Egger    14 年前

    在转储mysql数据库时,不要忘记:

     --flush-privileges  Emit a FLUSH PRIVILEGES statement after dumping the mysql
                         database.  This option should be used any time the dump
                         contains the mysql database and any other database that
                         depends on the data in the mysql database for proper
                         restore.
    
        3
  •  10
  •   Bobby B    14 年前

    所以,我有一个基本的误解。用户不是特定于数据库的,而是在服务器级别创建的。

    您可以使用以下查询查看所有现有用户:

    SELECT * FROM mysql.user;
    

    很明显,mysqldump不应该对用户做任何事情。但是,如果您需要一个导出/导入用户和烫发的答案,我建议您查看以下文章-它帮助了我。

    http://pento.net/2009/03/12/backing-up-permissions-for-individual-databases/

    我为板上的噪音道歉,但我想我会离开岗位,以防其他人也有同样的误解。

        4
  •  1
  •   PaulMest    7 年前

    从一个mac os x dev环境迁移到一个新环境时的完整过程。

    0)在新MacBook上删除新版MySQL

    我不小心安装了MySQL8,所以我不得不删除它,因为它比我的旧MacBook更新。

    # Remove binaries
    $ brew uninstall mysql
    
    # Remove data/config that is leftover
    $ rm -r /usr/local/var/mysql/
    

    1)在新MacBook上安装相同版本的MySQL

    # Install version that matched old MacBook
    $ brew install mysql@5.7
    
    # Because it is an old version, you have to do a special configuration step
    $ echo 'export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"' >> ~/.bash_profile
    $ source ~/.bash_profile
    
    # Start server
    $ mysql.server start
    

    2)在旧MacBook上转储数据

    $ mysqldump -uroot --flush-privileges --routines --all-databases > complete_dump.sql
    

    3)恢复新MacBook上的数据

    $ mysql -p -uroot < complete_dump.sql