【MySQL】ERROR 1045 (28000): Access denied for user的解决方法

时间:2022-06-16 19:53:07

  去官网下载压缩版的MySQL Server,解压配置path环境变量后。然后克隆my-default.ini创建my.ini文件,在文件中[mysqld]下面配置basedir和datadir

    basedir=%MySQL_HOME%

    datadir=%MySQL_HOME%/data

  注意:不要自己在mysql安装目录下面创建data文件夹

  

  配置好后,用管理身份运行cmd,

  输入cd %MySQL_HOME%/bin 转到mysql 的bin目录下,

  输入mysqld -install ,会打印出[Service successfully installed],表示服务安装成功。

  输入net start mysql ,会打印出 [MySQL 服务正在启动,MySQL 服务启动失败],

  输入mysqld --console,然后没有任何的log日志,这是因为mysql目录下没有data文件数据

  

  在cmd中

  输入mysqld --initialize ,此时会生成data文件,初始化数据

  输入net start mysql ,会打印出[MySQL 服务正在启动,MySQL 服务已经启动成功]

  输入net stop mysql ,会打印出[MySQL 服务正在停止,MySQL 服务已经停止成功]

  此时服务已经能正常启动和停止了。

  

  在cmd中

  输入net start mysql ,启动mysql服务,

  输入mysql -u root -p ,会提示[ENTER PASSWORD:],直接回车,会提示ERROR 1045 (28000): Access denied for user

  这是因为初始化data的时候,随机生成了密码,此时需要修改密码。

 

  在mysql的配置文件my.ini中,在[mysqld]下面添加 skip-grant-tables ,保存文件后,停止服务后重新启动服务。

  输入mysql -u root -p ,会提示[ENTER PASSWORD:],直接回车,会出现welcom to...一大片信息

  输入use mysql; 会打印出[Database changed]

  如果是mysql 5.6以前的,输入UPDATE mysql.user SET Password=PASSWORD('123456') WHERE User='root';

  如果是mysql 5.6以后的,输入UPDATE mysql.user SET authentication_string=PASSWORD('root') WHERE USER='root';

  这是由于5.6以后user表中没有password字段。

  输入FLUSH PRIVILEGES; 刷新数据库。

  输入quit ,推出mysql。

 

  至此密码修改完,已经可以正常登录了。