我有我的家庭系统上运行的MySQL。 我正在玩access(试图允许从本地主机以外的其他访问),并作为一个完整的数据库noob /失败者,如果locking我的root用户。
我现在唯一可以进入的方法是使用–skip-grant-tables&选项(在Googlesearch后发现)启动一个mysqld_safe进程。
我试过更新用户设置主机='本地主机'其中用户='根'; 而这似乎并不奏效。
有没有办法“开始新鲜”? 我仍然想保留这些数据,所以不想真正重新安装。
我不担心安全,因为它只是我的本地盒子(即快速和肮脏的修复将做)。 只是寻找一个“重置”选项或东西。 我是一个SQL黑客,所以不怕命令行,只是不知道我在做什么。 帮帮我! 🙁
在–skip-grant-tables期间,不能使用GRANT或REVOKE语句,所以不能使用内置的函数来创build/删除用户。
你基本上想要在mysql.user表中创build/编辑一行。 要自己做到这一点:
Pastebin链接 (编辑:查询正在打破SF接口)
创build的用户只能从本地主机访问。 祝你好运!
您可以使用REVOKE命令来删除权限,但您可能需要在运行mysql数据库后检查用户,db,tables_priv和columns_priv表,以确保它已经完成了您所期望的操作。 如果没有,您可以删除这些表中与您正在查找的内容相匹配的所有行。 只要确保你总是有一个用户行中有:
Host: localhost User: root password:
你可能有一个密码在那里。 如果没有密码,您可以从本地机器以root身份login到数据库。 显然,如果有其他人可以login服务器,这并不理想。
你应该记住的一件事是,当你修改权限时,使用GRANT / REVOKE或者自己修改表,就是运行
mysql> FLUSH PRIVILEGES;
使MySQL注意到这些变化。
我见过的解决密码丢失问题的最快方法是使用init-file config选项 :
[mysqld] #this should already be here, add the following line after it
init-file = /tmp/init.sql cat <<EOF>/tmp/init.sql
grant all privileges on *.* to 'temp'@'localhost' identified by 'temp' with grant option;
EOF sudo /etc/init.d/mysql restart 现在,您可以通过正确的GRANT , REVOKE和SHOW GRANTS FOR语句login并进行更正: mysql -utemp -ptemp
这是对MySQL自己在这里给出的build议的改进。