出于某种原因,MySQL停止为root提供访问权限.使用Homebrew卸载并重新安装.新鲜的安装,新鲜的桌子,但当我进入
mysql -u root -p
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
用户'root'@'localhost'拒绝访问(使用密码:否)
我重新安装了MySQL五次,但仍然要求输入密码.我该如何解决?
ege*_*ano 95
只需运行此命令(其中NEWPASS是您的密码):
$(brew --prefix mysql)/bin/mysqladmin -u root password NEWPASS
Run Code Online (Sandbox Code Playgroud)
我有同样的错误并以这种方式修复它.
sta*_*her 72
这些都不适合我.我想我已经在我的电脑上的某个地方安装了mysql,所以在那里设置了密码.花了几个小时尝试每个解决方案后,这对我有用:
$ brew services stop mysql
$ pkill mysqld
$ rm -rf /usr/local/var/mysql/ # NOTE: this will delete your existing database!!!
$ brew postinstall mysql
$ brew services restart mysql
$ mysql -uroot
Run Code Online (Sandbox Code Playgroud)
归功于@Ghrua
小智 61
几天前我遇到了同样的问题.在安装mysqlvia homebrew并在启动守护程序之前运行初始化脚本(mysql_install_db)时会发生这种情况.mysql
要修复它,您可以删除mysql数据文件,重新启动服务,然后运行初始化脚本:
launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
rm -r /usr/local/var/mysql/
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
unset TMPDIR
mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
Run Code Online (Sandbox Code Playgroud)
abl*_*ike 58
如果您无意中设置并忘记了root密码,并且您不想擦除所有数据库并重新开始,因为您很懒,并且忘记了备份解决方案,并且您使用的是最新的Homebrew安装(2013年冬季),以下是重置MySQL密码的步骤.
停止当前运行的MySQL实例
launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
Run Code Online (Sandbox Code Playgroud)
现在手动启动mysql跳过授权表和网络
$(brew --prefix mysql)/bin/mysqld_safe --skip-grant-tables --skip-networking
Run Code Online (Sandbox Code Playgroud)
请注意,如果运行echo $(brew --prefix mysql)并且它在bash 中没有响应为"/ usr/local/opt/mysql",则需要相应地调整路径.
完成此操作后,您现在应该有一个正在运行的,未受保护的MySQL实例.
登录并设置密码
mysql -u root
Run Code Online (Sandbox Code Playgroud)
在提示符下,输入以下MySQL命令为受影响的用户设置新密码.
mysql> update mysql.user set password=PASSWORD('new_password_here') WHERE user='root';
Run Code Online (Sandbox Code Playgroud)
如果一切都按计划进行,应该说:
Query OK, 1 row affected (0.02 sec)
Rows matched: 4 Changed: 1 Warnings: 0
Run Code Online (Sandbox Code Playgroud)
退出MySQL提示符.
mysql> exit
Bye
Run Code Online (Sandbox Code Playgroud)
停止服务器:
mysqladmin -u root shutdown
Run Code Online (Sandbox Code Playgroud)
现在,让我们放回启动守护程序,这样我们就可以再次准备好MySQL了:
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
Run Code Online (Sandbox Code Playgroud)
恭喜.你刚刚重置了你的mysql root密码.给自己倒一杯咖啡,并获得备用解决方案!
Nir*_*han 42
通过home brew安装mysql后出现此错误.
所以首先删除安装.然后通过Homebrew重新安装
brew update
brew doctor
brew install mysql
Run Code Online (Sandbox Code Playgroud)
然后重启mysql服务
mysql.server restart
Run Code Online (Sandbox Code Playgroud)
然后运行此命令以设置新的root密码.
mysql_secure_installation
Run Code Online (Sandbox Code Playgroud)
最后它会要求重新加载权限.说是的.然后再次登录mysql.并使用您设置的新密码.
mysql -u root -p
Run Code Online (Sandbox Code Playgroud)
Aru*_*ius 21
如果您在 Mojave、Catalina、Big Sur 和现在的 macOS Monterey 上运行:
brew install mariadb
...
brew services start mariadb
==> Successfully started `mariadb` (label: homebrew.mxcl.mariadb)
$(brew --prefix mariadb)/bin/mysqladmin -u root password newpass
/usr/local/opt/mariadb/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost''
Run Code Online (Sandbox Code Playgroud)
使用 root 帐户登录也失败:
mariadb -u root
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
Run Code Online (Sandbox Code Playgroud)
然后创建默认管理员用户与您的MacOS帐户用户名相同的名称,例如johnsmit。
要以 root 身份登录并设置 root 密码,请发出(使用您的用户名):
mariadb -u johnsmit
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 17
Server version: 10.4.11-MariaDB Homebrew
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> ALTER USER 'root'@'localhost' IDENTIFIED BY 'ROOT-PASSWORD';
Query OK, 0 rows affected (0.006 sec)
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.002 sec)
MariaDB [(none)]> exit
Bye
Run Code Online (Sandbox Code Playgroud)
所以你在本地主机上从 mysql 更改 root 密码。
奖励:要更改当前或其他用户通行证,您可以使用mysqladmin命令:
$(brew --prefix mariadb)/bin/mysqladmin -u arunas password 'newsecret'
Run Code Online (Sandbox Code Playgroud)
但这出于某种原因不会影响本地主机,但应该适用于应用程序登录。
或者使用本机 MySQL 更改用户密码 SQL,它明确指定主机,在我的例子中是用户的 'localhost' 帐户:
mariadb -u arunas
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 11
Server version: 10.5.9-MariaDB Homebrew
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> ALTER USER 'arunas'@'localhost' IDENTIFIED BY 'newsecret';
Query OK, 0 rows affected (0.006 sec)
MariaDB [(none)]> exit
Bye
Run Code Online (Sandbox Code Playgroud)
现在让我们尝试不使用密码登录:
mariadb -u arunas
ERROR 1045 (28000): Access denied for user 'arunas'@'localhost' (using password: NO)
Run Code Online (Sandbox Code Playgroud)
您看到登录失败,因此现在我们需要指定密码的需要:
mariadb -u arunas -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 13
Server version: 10.5.9-MariaDB Homebrew
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> exit
Bye
Run Code Online (Sandbox Code Playgroud)
祝使用愉快!
小智 10
希望这可以帮助。
由于这个问题很久以前就被问过/回答过,那些最重要的答案对我不起作用。这是我在 2020 年的解决方案。
背景:由自制软件安装的新鲜 mysql/mariadb。
问题:root 的密码不为空且未知。
修复:
原因:
如果您使用的是 macOS 并通过 Homebrew 安装 MariaDB,您可以使用操作系统 root 密码,然后将密码重置为您想要的任何内容,在这种情况下,我删除了 root 的密码:
sudo mysqladmin -u root password ''
Run Code Online (Sandbox Code Playgroud)
或者,如果您想设置密码,可以将密码放在单引号之间:
sudo mysqladmin -u root password 'NEW-PASSWORD-HERE'
Run Code Online (Sandbox Code Playgroud)