我的问题和这个问题的题目是一样的,所以如果有人在谷歌上搜索这个问题,想要在 Windows 上以“跳过授予表”模式启动 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
在服务器部分,在[ 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
如果您使用 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
注: 完成 ABC0的工作后,应该恢复 C:\ProgramData\MySQL\MySQL Server 5.6\my.ini的文件。
UPDATE user SET `authentication_string` = PASSWORD('myNuevoPassword') WHERE `User` = 'root';
Edit file my.cnf.
sudo vi /etc/my.cnf
Erase line.
skip-grant-tables
Save and exit.
Restart MySQL service.
service mysqld restart
Check service status.
service mysql status
Connect to database.
mysql -u root -p
Type new password when prompted.
This action is very dangerous, it allows anyone to connect to all databases with no restriction without a user and password. It must be used carefully and must be reverted quickly to avoid risks.
sed -i 's/^#skip-grant-tables.*/skip-grant-tables/g' /etc/my.cnf
service mysql restart
mysql -e "UPDATE mysql.user SET authentication_string='' WHERE user='root';"
sed -i 's/^skip-grant-tables.*/#skip-grant-tables/g' /etc/my.cnf
通过在终端中写入 sudo service mysql restart来重新启动 mysql 服务。
如果您的服务器没有运行,那么在终端中写入 sudo service mysql start。
另一件值得一提的事情是
我还有另一个问题,我用几乎完全相同的方式解决了。
我的服务器在3306端口没有监听,
所以我还必须在那个 mysqld.cnf文件中添加 port = 3306。
现在我知道了