2014-12-08 64 views
0

我通过将整个var/lib/mysql文件夹复制到外部驱动器备份我的MySql数据库。每当我更改数据库时,我都会这样做。每一次,我都会收到一条消息,表示我没有这方面的许可。所以我必须回去重置它们。当我更改mysql数据库我失去了权限

我必须有东西设置错了,但我不知道是什么。任何人都可以提供建议或线索?

我在Ubuntu 14.04 MySql 5.5下运行。

+1

http://unix.stackexchange.com/a/15644 – Kumar 2014-12-08 05:30:07

+0

http://askubuntu.com/questions/137424/moving-mysql-datadir – Kumar 2014-12-08 05:30:39

+1

嗨库马尔,链接提供了我一个线索,但它确实看起来像如果我的所有文件都设置为rwx。一位朋友建议我将权限重置为777,所以我会尝试。感谢您让我走上正轨。 – 2014-12-09 02:05:32

回答

0

如果您从未为MySQL设置过root密码,则服务器根本不需要密码就可以进行连接。但是,这是不安全的。有关分配密码的说明,请参阅“Securing the Initial MySQL Accounts”。

如果您知道root密码,但想要更改它,请参阅“SET PASSWORD Syntax”。

如果您先前设置了根密码,但忘记了密码,则可以设置新密码。以下部分提供了有关Windows系统的说明以及适用于任何系统的一般说明。

在Windows上,使用以下过程为所有的MySQL root账户重置密码:上

登录到您的系统管理员身份。

停止MySQL服务器,如果它正在运行。对于作为Windows服务运行的服务器,请转到服务管理器:从开始菜单中,选择控制面板,然后选择管理工具,然后选择服务。在列表中找到MySQL服务并停止它。

如果您的服务器未作为服务运行,则可能需要使用任务管理器强制停止。

创建一个包含以下语句的文本文件。将密码替换为您要使用的密码。

UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root'; 
FLUSH PRIVILEGES; 

在一行中写入UPDATE和FLUSH语句。 UPDATE语句重置所有root帐户的密码,并且FLUSH语句会通知服务器将授权表重新加载到内存中,以便通知密码更改。

保存文件。对于这个例子,该文件将被命名为C:\ mysql-init.txt。

打开控制台窗口进入命令提示符:从开始菜单中选择运行,然后输入cmd作为要运行的命令。

开始用特殊--init-file选项MySQL服务器(注意在选项值反斜杠加倍):

C:\> C:\mysql\bin\mysqld --init-file=C:\\mysql-init.txt 
If you installed MySQL to a location other than C:\mysql 

,相应地调整命令。

服务器在启动时执行由--init-file选项指定的文件内容,并更改每个root帐户的密码。

如果希望服务器输出显示在控制台窗口中而不是日志文件中,还可以将--console选项添加到该命令。

如果你使用MySQL安装向导安装了MySQL,你可能需要指定一个--defaults-file选项:

C:\> "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqld.exe" 
     --defaults-file="C:\\Program Files\\MySQL\\MySQL Server 5.1\\my.ini" 
     --init-file=C:\\mysql-init.txt 

适当--defaults文件设置可以使用服务管理器中找到:从开始菜单中选择控制面板,然后选择管理工具,然后选择服务。在列表中找到MySQL服务,右键单击它,然后选择“属性”选项。可执行文件的路径字段包含--defaults-file设置。

服务器启动成功后,删除C:\ mysql-init.txt。

您现在应该可以使用新密码以超级用户身份连接到MySQL服务器。停止MySQL服务器,然后再次以正常模式重新启动它。如果将服务器作为服务运行,请从Windows服务窗口启动它。如果您手动启动服务器,请使用您通常使用的任何命令。

相关问题