来自shell的grunt导入数据库

时间:2014-04-03 07:27:19

标签: mysql shell gruntjs

我想使用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 个答案:

答案 0 :(得分:2)

我建议重置root密码,这在Windows 7,MySQL 5.5.37

中适用于我
  • 停止MySQL进程/服务

  • 禁用授权表格检查:

Windows 中转到

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

Linux

/etc/mysql/my.cnf

在他的[mysqld]部分下添加skip-grant-tables

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

  • 转到MySQL提示符,因为您已禁用授权表检查

    ,所以不需要用户/密码

    C:&GT; MySQL的

  • 执行以下命令,替换&#39; your_secret_password&#39;相应

    UPDATE mysql.user SET Password = PASSWORD(&#39; your_secret_password&#39;)WHERE User =&#39; root&#39 ;; FLUSH PRIVILEGES;

  • 退出MySQL提示

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

    跳过授权-表

  • 重启MySQL进程/服务