由于某种原因,MySQL停止给予root用户访问权限。卸载并通过Homebrew重新安装。新安装,新桌子,但当我进入
mysql -u root -p
我收到此错误:
用户'root'@'localhost'的访问被拒绝(使用密码:NO)
我重新安装了MySQL五次,但仍然要求输入密码。我该如何解决?
mysql_secure_installation
并回答简单的问题即可
mysql -u root
在这里工作...
由于某种原因,MySQL停止给予root用户访问权限。卸载并通过Homebrew重新安装。新安装,新桌子,但当我进入
mysql -u root -p
我收到此错误:
用户'root'@'localhost'的访问被拒绝(使用密码:NO)
我重新安装了MySQL五次,但仍然要求输入密码。我该如何解决?
mysql_secure_installation
并回答简单的问题即可
mysql -u root
在这里工作...
Answers:
只需运行以下命令(NEWPASS
您的密码在哪里):
$(brew --prefix mysql)/bin/mysqladmin -u root password NEWPASS
我遇到了同样的错误,并以这种方式解决了。
$
在命令行shell命令的开头消除了char 的用法。其他人可能会感到困惑,因为该$
符号通常在SO和其他论坛上用作shell提示标记。但是,$
和之间缺少空格也(
应该提示人们。
$(brew --prefix mariadb)/bin/mysqladmin -u root password NEWPASS
这些都不对我有用。我认为我已经在计算机上某处安装了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
全部归功于@Ghrua
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YOURNEWPASSWORD';
设置新的root密码。
万一您无意中设置并忘记了root密码,并且您不想擦除所有数据库并重新开始,因为您懒惰并且忘记了有备用的解决方案,并且您正在使用最新的Homebrew安装程序(2013年冬季),以下是为MySQL重置密码的步骤。
停止当前正在运行的MySQL实例
launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
现在手动跳过授权表和联网来启动mysql
$(brew --prefix mysql)/bin/mysqld_safe --skip-grant-tables --skip-networking
请注意,如果在运行echo $(brew --prefix mysql)时,它不响应为“ / usr / local / opt / mysql”在bash,则需要相应地调整路径。
完成此操作后,现在应该启动一个正在运行的不受保护的MySQL实例。
登录并设置密码
mysql -u root
在提示符下,输入以下MySQL命令为受影响的用户设置新密码。
mysql> update mysql.user set password=PASSWORD('new_password_here') WHERE user='root';
如果一切都计划好了,应该说:
Query OK, 1 row affected (0.02 sec)
Rows matched: 4 Changed: 1 Warnings: 0
退出MySQL提示符。
mysql> exit
Bye
停止服务器:
mysqladmin -u root shutdown
现在,让我们放回启动守护进程,以便我们再次准备好MySQL:
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
恭喜你 您刚刚重置了mysql的root密码。倒一杯咖啡,并准备好备用解决方案!
mysqladmin -u root shutdown
password
不是mysql 5.7.9中的有效列。相反,我不得不使用authentication_string
代替。其余说明完全正常。谢谢!
update user set authentication_string=password('new_password_here') where user='root';
update mysql.user set authentication_string=password('none') where user='root';
它才能运行。(就像我上方的评论一样,但要优先mysql.
于user
。)
几天前我遇到了同样的问题。当您mysql
通过安装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
mysqld --initialize
No such file or directory
当我运行第一个命令时,我就知道了。
通过home brew安装mysql后出现此错误。
因此,首先删除安装。然后通过Homebrew重新安装
brew update
brew doctor
brew install mysql
然后重启mysql服务
mysql.server restart
然后运行此命令来设置新的root密码。
mysql_secure_installation
最后,它将要求重新加载特权。说是。然后再次登录到mysql。并使用您设置的新密码。
mysql -u root -p
mysql_secure_installation
但关键部分是mysql.server restart
如果你跑
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''
还使用root帐户登录失败:
mariadb -u root
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
然后,将为默认的admin用户创建与您的MacOS帐户用户名相同的名称,例如johnsmit。
要以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)]> exit
Bye
这对我有用:
sudo mysql -u root
尝试sudo
避免“访问被拒绝”错误:
sudo $(brew --prefix mariadb)/bin/mysqladmin -u root password NEWPASS
希望这可以帮助。
由于很久以前就问过这个问题,所以这些最重要的答案对我不起作用。这是我在2020年的解决方案。
背景:自制软件安装了最新的mysql / mariadb。
问题:root的密码不为空且未知。
解决方法:
原因:
在终端机中运行这些行对我和其他遇到相同问题的人来说是成功的诀窍。这些命令在brew成功安装mysql之后在终端中列出。
mkdir -p ~/Library/LaunchAgents
cp /usr/local/Cellar/mysql/5.5.25a/homebrew.mxcl.mysql.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
/usr/local/Cellar/mysql/5.5.25a/bin/mysqladmin -u root password 'YOURPASSWORD'
YOURPASSWORD
root的密码在哪里。
No such file or directory
当我运行这些命令时,我才知道
这对我来说适用于MAC https://flipdazed.github.io/blog/osx%20maintenance/set-up-mysql-osx
通过运行启动mysql
brew服务启动mysql
运行安装脚本
mysql_secure_installation
系统将要求您设置一个“验证密码”插件。输入y以执行此操作。
选择所需的密码验证(如果只是您使用数据库,那并不重要)
现在,为所有其余选项选择y:删除匿名。用户;禁止远程root登录;删除测试数据库;重新加载特权表。现在您应该收到一条消息
All done!
这对我有用。希望这也对您有用!!!跟着他们。
brew services stop mysql
pkill mysqld
# NB: the following command will REMOVE all your databases!
# Make sure you have backups or SQL dumps if you have important data in them already.
rm -rf /usr/local/var/mysql/
brew services restart mysql
mysql -uroot
UPDATE mysql.user SET authentication_string=null WHERE User='root';
FLUSH PRIVILEGES;
exit;
mysql -u root
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password
BY'YOUR_PASS_WORD!!!!';
rm -rf /usr/local/var/mysql/
命令将删除计算机上的所有数据库和Mysql数据!
通过brew安装mysql时的默认密码是root,请尝试使用此密码,它对我有用
mysql -uroot -proot
brew info mysql
:我们安装的MySQL数据库没有root密码。要确保安全,请运行:mysql_secure_installation
1号航站楼:
$ mysql_safe
2号航站楼:
$ mysql -u root
mysql> UPDATE mysql.user SET Password=PASSWORD('new-password') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> quit
我使用Catalina并使用此mysql_secure_installation
命令,现在对我有用:
$ mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.
Enter current password for root (enter for none): << enter root here >>
我输入root
当前密码
OK, successfully used password, moving on...
Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.
然后做剩下的
因此,如果有人的情况和配置与我相同,并且也将要发疯-这对我有用。
一个很长的故事后,我有一个冲泡安装MariaDB的自动重启保存当我杀死它的进程(这是酿造的做),它有一个root密码,我根本不知道。
$ brew services list
显示如下:
mariadb started jdoe /path/to/homebrew.mxcl.mariadb.plist
使用以下命令停止MySQL服务器:
$ brew services stop mariadb
然后在没有 root用户的情况下再次启动它(并且不使用brew):
$ mariadbd --skip-grant-tables &
在这里,mysql_secure_installation
由于的缘故对我不起作用--skip-grant-tables
,并且由于没有,它也不需要,--skip-grant-tables
因为它需要密码(我没有密码)。
尝试$(brew --prefix mysql)/bin/mysqladmin -u root password hunter2
只返回奇怪的错误,什么也没做;$(brew --prefix mariadb)/bin/mysqladmin -u root password hunter2
也没有用,给出了不同的错误,以及对我没有用的建议。
但是您现在无需凭据即可登录mysql:$ mysql
在这里,为root更新用户表的旧方法不起作用,因为“列'Password'不可更新”。
新方法alter user
仅在您使用BUT后才能使用flush privileges;
。
然后:
MariaDB [(none)]> alter user 'root'@'localhost' identified by 'hunter2';
(MariaDB [(none)]>
是MySQL提示这里)
然后做flush privileges;
一次。
退出MySQL客户端。
现在,就brew而言,MariaDB仍未运行,因此可$ ps aux | grep -i mariadb
用于查找pid及其它$ kill -9 <pid>
。
然后使用$ brew services start mariadb
再次启动。
使用init文件启动mysql来更改root密码。
brew services stop mysql
pkill mysqld
echo "ALTER USER 'root'@'localhost' IDENTIFIED BY 'newRootPass';" > /tmp/mysql-init
$(brew --prefix mysql)/bin/mysqld --init-file=/tmp/mysql-init
您的根密码现已更改。确保正确关闭服务器以保存密码更改。在新的终端窗口中执行
mysqladmin -u root -p shutdown
并输入您的新通行证。
启动服务并删除init文件
brew services start mysql
rm /tmp/mysql-init
在mysql版本8.0.19上测试