代码之家  ›  专栏  ›  技术社区  ›  Alessandro Minoccheri

从shell导入数据库

  •  1
  • Alessandro Minoccheri  · 技术社区  · 12 年前

    我想使用 grunt-shell 将数据库导入远程服务器。

    这是我尝试过的:

    shell: {
                install_db: {
                    options: {
                        stdout: true,
                        stderr: true
                    },
                    command: [
                        "ssh user@demo.server.it mysql < /Volumes/www/database/mydb.sql --database db_test -u root -p password",
                    ].join("&&")
                }
            }
    

    在我的远程服务器中,我有一个名为 root 他拥有所有特权。

    当我像

    grunt shell
    

    我检索到此错误:

    Enter password: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
    

    但我认为那个用户是正确的。 我也尝试过:

    "ssh user@demo.server.it mysql < /Volumes/www/database/mydb.sql --database db_test -u root -p",
    

    "ssh user@demo.server.it",
    "sudo mysql < /Volumes/www/database/mydb.sql --database db_test -u root -p password",
    

    没有什么它不能将我的sql文件导入到远程服务器中。

    我已经创建了那个数据库。

    我该怎么解决?

    1 回复  |  直到 12 年前
        1
  •  2
  •   Daniel Mora    12 年前

    我会推荐 重置根密码 ,这在Windows 7、MySQL 5.5.37中对我有效

    • 停止MySQL进程/服务

    • 禁用授权表检查:

    在里面 窗户

    C:\Program Files\MySQL\MySQL Server 5.5\my.ini
    

    在里面 Linux系统

    /etc/mysql/my.cnf
    

    在[mysqld]部分下添加skip-grant表

    [mysqld]
    skip-grant-tables
    
    • 重新启动MySQL进程/服务

    • 转到MySQL提示符,您不需要用户/密码,因为您已经禁用了授权表检查

      C: >mysql数据库

    • 执行以下命令,相应地替换“your_secret_password”

      UPDATE mysql.user SET Password=Password('your_secret_Password')WHERE user='root'; 刷新特权;

    • 退出MySQL提示

    • 停止MySQL进程/服务
    • 启用授权表检查:从my.ini或my.cnf中删除该行

      跳过授权表

    • 重新启动MySQL进程/服务