所以我基本上是用自制软件在我的mac上安装mariadb和mysql。这些是我做的步骤:
- 酿造医生->工作
- brew update -> worked
- brew install mariadb -> worked
- mysql_install_db ->失败
警告:无法使用/usr/local/Cellar/mariadb/10.4.6_1/bin/resolveip查找主机“Toms-MacBook-Pro.local”。这可能意味着您的libc库与此二进制MariaDB版本不是100%兼容。MariaDB守护进程mysqld应该正常工作,但主机名解析不起作用。这意味着在指定MariaDB权限时,您应该使用IP地址而不是主机名!mysql.user表已经存在!
运行mysql_upgrade
之后,我得到了以下错误:
版本检查失败。调用'mysql'命令行客户端时出现以下错误ERROR 1698(28000):用户'root'@'localhost'访问被拒绝升级失败
我不能这样进入mysql:
mysql -uroot
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
但就像这样
sudo mysql -u root
用户表返回以下内容:
MariaDB [(none)]> USE mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [mysql]> SELECT User, Host, plugin FROM mysql.user;
+---------------+-------------------------+-----------------------+
| User | Host | plugin |
+---------------+-------------------------+-----------------------+
| root | localhost | mysql_native_password |
| toms | localhost | mysql_native_password |
| | localhost | |
| | toms-macbook-pro.local | |
+---------------+-------------------------+-----------------------+
4 rows in set (0.004 sec)
5条答案
按热度按时间q3aa05251#
您可以尝试更新root密码,然后再访问它
退出Mysql并尝试登录
fzsnzjdm2#
MariaDB 10.4默认为本地根启用Unix socket身份验证插件。这意味着在新安装的系统上,只要您是本地根用户(例如:在
sudo
下运行),并使用套接字而不是TCP。此外,MariaDB 10.4允许多种帐户身份验证方法。它将本地根配置为也能够使用密码身份验证,但它最初会使密码无效(不像以前那样设置空密码)。如果你想使用密码验证并以
mysql -uroot -p
身份连接,你需要首先以root身份使用Unix套接字连接并运行SET PASSWORD=...
。高级用户配置现在以JSON格式存储在
mysql.global_priv
表中。保留mysql.user
是为了向后兼容,但它已不再是表,而变成了视图。由于允许多种身份验证方法,它并不总是准确地显示用户配置。具体来说,它没有显示用户可用的所有身份验证方法,您需要查询mysql.global_priv
。在新安装的系统上,您将看到类似您可以找到有关10.4身份验证更改here的更多信息。
9udxz4iz3#
问题是什么?
brew install mariadb@10.2
安装MariaDB。mysqld_safe
命令brew services stop mariadb@10.2
mysqld_safe --skip-grant-tables --skip-networking
运行MariaDB <= 10.4的命令:
mysql_secure_installation
run command for MariaDB >= 10.4
mariadb-secure-installation
在接下来的步骤中输入并重新输入新密码
Password update failed!
/usr/local/mysql/bin/mysqladmin -u root -p password
但前两种方法都不起作用!
brew services start mariadb@10.2
mysql.servert start
/usr/local/var/mysql/<filename>.local.err
tail -f /usr/local/var/mysql/<filename>.local.err
mysql.servert start
Invalid flags lib
相关的错误brew services stop mariadb@10.2
运行
sudo rm -rf /usr/local/var/mysql
这将从brew获取mariaDB Cellar安装路径,并安装初始数据库。
mysql_secure_installation
或mariadb-secure-installation
运行:sudo mysql -u root
use mysql;
ALTER USER 'root@localhost' IDENTIFIED BY '<password>';
(替换)ALTER USER 'root@127.0.0.1' IDENTIFIED BY '<password>';
(替换)FLUSH PRIVILEGES;
exit
mysql -u root -p
并使用在前面步骤中输入的<password>
。就这样!
rqdpfwrv4#
我正在使用这个**
mysql_secure_installation
**,它现在对我有效:我输入**
root
**作为当前密码然后做剩下的事
rdlzhqv95#
tl;dr
1.建议使用
sudo
。(例如sudo mysql
)1.仅在必要时设置
root
帐户的密码。简介
从MariaDB 10.4.3开始,默认身份验证方法更改为
unix_socket
。一旦(
unix_socket
插件)具有(UNIX)用户名,它将验证连接用户为具有相同用户名的MariaDB帐户。- Authentication Plugin - Unix Socket使用unix_socket意味着如果您是系统root用户,则可以以
root@locahost
身份登录,而无需密码。MariaDB 10.4认证换句话说,如果你是系统的“root”用户,那么你可以在没有任何密码的情况下访问MariaDB的“root”用户。这可以在linux和macOS中使用
sudo
命令来实现。Unix
mysql
命令被拒绝,因为没有名称为“username”的MariaDB用户。sudo mysql
命令能够工作,因为有一个名为“root”的DB用户。“root”和“mysql”用户的身份验证字符串设置为
invalid
,这不是有效的密码哈希。这就是为什么这些帐户似乎有一个密码设置的原因。默认情况下会创建两个全能帐户- root和拥有数据目录的OS用户,通常是mysql。它们被创建为:
macOS和Brew
由于某种原因,与Brew一起安装的MariaDB的最新版本具有不同的设置。
mysql
命令和身份验证在没有sudo
的情况下也能正常工作,因为默认情况下会创建另一个MariaDB用户--它的用户名与macOS用户名匹配。mysql_secure_installation
臭名昭著的
mysql_secure_installation
脚本在MariaDB 10.4+中可能不需要。请注意,此脚本存在的许多原因不再适用。特别是,从MariaDB 10.4开始,默认情况下应用Unix套接字身份验证,通常不需要创建root密码。请参阅MariaDB 10.4中的身份验证。- mysql_secure_installation