我将root用户从我们的数据库中锁定。我需要将所有权限都返回给root用户。我有密码,我可以登录MySQL。但root用户没有所有权限。
答案 0 :(得分:39)
我遇到了与这个问题的标题相同的问题,所以请其他人在谷歌上搜索这个问题并希望在Windows上以'skip-grant-tables'模式启动MySql,这就是我所做的。
通过管理员工具服务停止MySQL服务。
修改my.ini配置文件(假设默认路径)
C:\Program Files\MySQL\MySQL Server 5.5\my.ini
或MySQL版本> = 5.6
C:\ProgramData\MySQL\MySQL Server 5.6\my.ini
在SERVER SECTION中,在[mysqld]下,添加以下行:
skip-grant-tables
所以你有
# SERVER SECTION
# ----------------------------------------------------------------------
#
# The following options will be read by the MySQL Server. Make sure that
# you have installed the server correctly (see above) so it reads this
# file.
#
[mysqld]
skip-grant-tables
再次启动服务,您应该能够在没有密码的情况下登录数据库。
答案 1 :(得分:29)
如何重新控制MySQL中的root用户。
危险:风险操作
使用。
编辑my.cnf
文件
sudo vi /etc/my.cnf
在mysqld块中添加行。*
skip-grant-tables
保存并退出。
重启MySQL服务。
service mysql restart
检查服务状态。
service mysql status
连接到mysql。
mysql
使用主数据库。
use mysql;
重新定义用户root密码。
UPDATE user SET `authentication_string` = PASSWORD('myNuevoPassword') WHERE `User` = 'root';
编辑文件my.cnf。
sudo vi /etc/my.cnf
擦除线。
skip-grant-tables
保存并退出。
重启MySQL服务。
service mysqld restart
检查服务状态。
service mysql status
连接数据库。
mysql -u root -p
出现提示时输入新密码。
此操作非常危险,它允许任何人在没有用户和密码的情况下无限制地连接到所有数据库。必须小心使用,并且必须快速恢复以避免风险。
答案 2 :(得分:4)
在Linux系统上,您可以执行以下操作(对于其他操作系统应该类似)
检查mysql进程是否正在运行:
sudo service mysql status
如果runnning然后停止进程: (确保关闭所有mysql工具)
sudo service mysql stop
如果您有问题停止,请执行以下操作
搜索流程:ps aux | grep mysqld
终止流程:kill -9 process_id
现在以安全模式启动mysql并使用跳过授权
sudo mysqld_safe --skip-grant-tables &
答案 3 :(得分:3)
尝试很多的东西后,这对我有用:
sudo mysql -u root
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpassword';
因此,首先我们使用sudo以root身份登录mysql,而无需输入密码。然后我们只需更新root的密码即可。
之后,我重新启动了mysqld
:
sudo service mysql restart
然后newpassword
已登录root!
答案 4 :(得分:2)
如果你使用mysql 5.6服务器并且C:\Program Files\MySQL\MySQL Server 5.6\my.ini
出现问题:
你应该去C:\ProgramData\MySQL\MySQL Server 5.6\my.ini
。
您应该添加skip-grant-tables
,然后您不需要密码。
# SERVER SECTION
# ----------------------------------------------------------------------
#
# The following options will be read by the MySQL Server. Make sure that
# you have installed the server correctly (see above) so it reads this
# file.
#
# server_type=3
[mysqld]
skip-grant-tables
注意:完成skip-grant-tables
上的工作后,您应该恢复C:\ProgramData\MySQL\MySQL Server 5.6\my.ini
的文件。
答案 5 :(得分:2)
如果您正在Apple MacBook OSX
上运行,那么:
my.cnf
。 (对我而言,它被放置了@
/Applications/XAMPP/xamppfiles/etc
。你可以搜索一下
无法找到它。)my.cnf
文件。"skip-grant-tables"
部分的末尾添加[mysqld]
(不带引号)并保存文件。skip-grant-tables
选项开头。现在做你想要的!!
PS:完成任何你想要做的事情后,请从skip-grant-tables
文件中删除my.cnf
ELSE MySQL服务器将始终在没有访问权限的情况下运行。
答案 6 :(得分:2)
使用以下命令(注意“d”):mysqld --skip-grant-tables
答案 7 :(得分:0)
如果这是一个Windows框,最简单的方法是停止服务器,将skip-grant-tables添加到mysql配置文件,然后重启服务器。
一旦修复了权限问题,请重复上述步骤,但删除skip-grant-tables选项。
如果您不知道配置文件的位置,请登录mysql send SHOW VARIABLES LIKE '%config%'
,其中一行返回将告诉您配置文件的位置。
答案 8 :(得分:0)
编辑my.ini文件并添加skip-grant-tables并重新启动mysql服务器:
[mysqld]
port= 3306
socket = "C:/xampp/mysql/mysql.sock"
basedir = "C:/xampp/mysql"
tmpdir = "C:/xampp/tmp"
datadir = "C:/xampp/mysql/data"
pid_file = "mysql.pid"
# enable-named-pipe
key_buffer = 16M
max_allowed_packet = 1M
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
log_error = "mysql_error.log"
skip-grant-tables
# Change here for bind listening
# bind-address="127.0.0.1"
# bind-address = ::1
答案 9 :(得分:0)
我在Windows 10中,使用WAMP64服务器。搜索了my.cnf
和my.ini
。在my.ini
中找到了C:\wamp64\bin\mariadb\mariadb10.2.14
。
遵循同事的指示:
my.ini
,搜索[mysqld]
'skip-grant-tables'
部分的末尾添加了[mysqld]
(但在其中)skip-grant-tables
选项的警告ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpassword';
my.ini
文件中,删除'skip-grant-tables'
行,保存文件现在您可以输入新密码。感谢这里的所有答案。
答案 10 :(得分:0)
请从控制台运行以下命令,以从命令提示符启动mysql数据库时跳过用户表验证
mysqld -skip-grant-tables