Har*_*edi 188 mysql sql database database-connection
$ ./mysqladminü根- P " 绝密 "
输入密码:
mysqladmin:在'localhost'连接到服务器失败错误:
'访问被拒绝用户'root'@'localhost'(使用密码:YES)'
我怎样才能解决这个问题?
use*_*906 463
我发现的所有解决方案都比必要的复杂得多,而且没有一个对我有用.这是解决我的问题的解决方案.无需重启mysqld或以特殊权限启动它.
sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
Run Code Online (Sandbox Code Playgroud)
使用单个查询,我们将auth_plugin更改为mysql_native_password并将root密码设置为root (随意在查询中更改它)
现在您应该可以使用root登录.更多信息可以在mysql文档中找到
(使用Ctrl + D或键入exit退出mysql控制台)
小智 265
/etc/my.cnf或/etc/mysql/my.cnf根据您的发行版.skip-grant-tables下[mysqld]mysql -u root -pmysql> flush privileges;ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword';mysql -u root -pBla*_*g23 39
我尝试了很多步骤来纠正这个问题.对于这个问题有很多可能解决方案的来源很难从废话中过滤出来.我终于找到了一个很好的解决方案在这里:
第1步:确定数据库版本
$ mysql --version
Run Code Online (Sandbox Code Playgroud)
你会看到MySQL的一些输出:
$ mysql Ver 14.14 Distrib 5.7.16, for Linux (x86_64) using EditLine wrapper
Run Code Online (Sandbox Code Playgroud)
或者为MariaDB输出如下:
mysql Ver 15.1 Distrib 5.5.52-MariaDB, for Linux (x86_64) using readline 5.1
Run Code Online (Sandbox Code Playgroud)
记下您正在运行的数据库和版本,稍后您将使用它们.接下来,您需要停止数据库,以便手动访问它.
第2步:停止数据库服务器
要更改root密码,必须事先关闭数据库服务器.
你可以用MySQL做到这一点:
$ sudo systemctl stop mysql
Run Code Online (Sandbox Code Playgroud)
对于MariaDB:
$ sudo systemctl stop mariadb
Run Code Online (Sandbox Code Playgroud)
步骤3:在没有权限检查的情况下重新启动数据库服务器
如果在不加载有关用户权限的信息的情况下运行MySQL和MariaDB,则可以使用root权限访问数据库命令行而无需提供密码.这将允许您在不知情的情况下访问数据库.
为此,您需要停止数据库加载存储用户权限信息的授权表.因为这有一点安全风险,所以您也应该跳过网络以防止其他客户端连接.
在不加载授权表或启用网络的情况下启动数据库:
$ sudo mysqld_safe --skip-grant-tables --skip-networking &
Run Code Online (Sandbox Code Playgroud)
此命令末尾的&符号将使此进程在后台运行,以便您可以继续使用终端.
现在,您可以以root用户身份连接到数据库,root用户不应该要求输入密码.
$ mysql -u root
Run Code Online (Sandbox Code Playgroud)
您将立即看到数据库shell提示符.
MySQL提示
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
Run Code Online (Sandbox Code Playgroud)
MariaDB提示
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
Run Code Online (Sandbox Code Playgroud)
现在您具有root访问权限,您可以更改root密码.
第4步:更改Root密码
mysql> FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)
现在我们可以实际更改root密码.
对于MySQL 5.7.6及更高版本以及MariaDB 10.1.20及更高版本,请使用以下命令:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
Run Code Online (Sandbox Code Playgroud)
对于MySQL 5.7.5及更早版本以及MariaDB 10.1.20及更早版本,请使用:
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
Run Code Online (Sandbox Code Playgroud)
请务必new_password使用您选择的新密码进行更换.
注意:如果ALTER USER命令不起作用,则通常表示更大的问题.但是,您可以尝试UPDATE ... SET重置root密码.
[重要]这是修复我的特定问题的具体行:
mysql> UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE User = 'root' AND Host = 'localhost';
Run Code Online (Sandbox Code Playgroud)
请记住在此之后重新加载授权表.
在任何一种情况下,您都应该看到命令已成功执行的确认.
Query OK, 0 rows affected (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
密码已更改,因此您现在可以停止数据库服务器的手动实例并按原样重新启动它.
步骤5:正常重启数据库服务器
本教程进入了一些重新启动数据库的步骤,但我使用的唯一部分是:
对于MySQL,使用: $ sudo systemctl start mysql
对于MariaDB,请使用:
$ sudo systemctl start mariadb
Run Code Online (Sandbox Code Playgroud)
现在,您可以通过运行以下命令确认已正确应用新密码:
$ mysql -u root -p
Run Code Online (Sandbox Code Playgroud)
该命令现在应该提示新分配的密码.输入它,您应该按预期访问数据库提示.
结论
您现在可以恢复对MySQL或MariaDB服务器的管理访问权限.确保您选择的新root密码强大且安全,并将其保存在安全的地方.
Dou*_*sea 26
根据我的经验,如果您在没有 sudo 的情况下运行,它将无法正常工作。因此,请确保您的命令是;
sudo mysql -uroot -p
Run Code Online (Sandbox Code Playgroud)
Fab*_*Fab 21
运行以下命令以root身份连接(没有任何密码)
sudo /usr/bin/mysql --defaults-file=/etc/mysql/debian.cnf
Run Code Online (Sandbox Code Playgroud)
Ami*_* Kr 13
对于新的Linux用户来说,这可能是一项艰巨的任务.让我用mysql 8更新这个(现在最新版本是8.0.12,截至2018年9月12日)
而已.
PYK*_*PYK 12
我的站在这里:
乌班图21.04
PHP 5.6.40-57
MYSQL 5.7.37
让我们配置一下
nano /etc/mysql/mysql.conf.d/mysqld.cnf
Run Code Online (Sandbox Code Playgroud)
在底部写下这个
skip-grant-tables
Run Code Online (Sandbox Code Playgroud)
重新加载它
service mysql restart
Run Code Online (Sandbox Code Playgroud)
小智 9
在尝试了所有其他答案之后,这终于对我有用
sudo mysql -- It does not ask me for any password
-- Then in MariaDB/MySQL console:
update mysql.user set plugin = 'mysql_native_password' where User='root';
FLUSH PRIVILEGES;
exit;
Run Code Online (Sandbox Code Playgroud)
我在这篇文章中找到了答案:https : //medium.com/@chiragpatel_52497/solved-error-access-denied-for-user-root-localhost-of-mysql-programming-school-6e3611838d06
我这样做是为了在 OSx 中的 MySQL 初始设置中设置我的 root 密码。打开一个终端。
sudo sh -c 'echo /usr/local/mysql/bin > /etc/paths.d/mysql'
Run Code Online (Sandbox Code Playgroud)
关闭终端并打开一个新终端。以下是在 Linux 中工作的,用于设置 root 密码。
sudo /usr/local/mysql/support-files/mysql.server stop
sudo mysqld_safe --skip-grant-tables
Run Code Online (Sandbox Code Playgroud)
( sudo mysqld_safe --skip-grant-tables :这在第一次对我不起作用。但第二次尝试,成功了。)
然后登录MySQL
mysql -u root
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)
现在更改密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';
Run Code Online (Sandbox Code Playgroud)
重启 MySQL:
sudo /usr/local/mysql/support-files/mysql.server stop
sudo /usr/local/mysql/support-files/mysql.server start
Run Code Online (Sandbox Code Playgroud)
None of the above answers helped me with this problem, so here's the solution I found.
The relevant part:
In Ubuntu systems running MySQL 5.7 (and later versions), the root MySQL user is set to authenticate using the auth_socket plugin by default rather than with a password. This allows for some greater security and usability in many cases, but it can also complicate things when you need to allow an external program (e.g., phpMyAdmin) to access the user.
In order to use a password to connect to MySQL as root, you will need to switch its authentication method from auth_socket to mysql_native_password. To do this, open up the MySQL prompt from your terminal:
sudo mysqlNext, check which authentication method each of your MySQL user accounts use with the following command:
SELECT user,authentication_string,plugin,host FROM mysql.user;Output
Run Code Online (Sandbox Code Playgroud)+------------------+-------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+-------------------------------------------+-----------------------+-----------+ | root | | auth_socket | localhost | | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost | +------------------+-------------------------------------------+-----------------------+-----------+ 4 rows in set (0.00 sec)In this example, you can see that the root user does in fact authenticate using the auth_socket plugin. To configure the root account to authenticate with a password, run the following ALTER USER command. Be sure to change password to a strong password of your choosing, and note that this command will change the root password you set in Step 2:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';Then, run FLUSH PRIVILEGES which tells the server to reload the grant tables and put your new changes into effect:
FLUSH PRIVILEGES;Check the authentication methods employed by each of your users again to confirm that root no longer authenticates using the auth_socket plugin:
SELECT user,authentication_string,plugin,host FROM mysql.user;Output
Run Code Online (Sandbox Code Playgroud)+------------------+-------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+-------------------------------------------+-----------------------+-----------+ | root | *3636DACC8616D997782ADD0839F92C1571D6D78F | mysql_native_password | localhost | | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost | +------------------+-------------------------------------------+-----------------------+-----------+ 4 rows in set (0.00 sec)You can see in this example output that the root MySQL user now authenticates using a password. Once you confirm this on your own server, you can exit the MySQL shell:
exit
小智 5
在您的 MySQL 工作台中,您可以转到左侧边栏,在管理下选择“用户和权限”,在用户帐户下单击 root,在右侧部分单击选项卡“帐户限制”以增加最大查询、更新等,以及然后单击选项卡“管理角色”并选中复选框以授予帐户访问权限。希望有帮助!
在我的 Debian 10 下,错误
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
Run Code Online (Sandbox Code Playgroud)
被(GOOD WAY)解决了
sudo mysql -u root -p mysql
Run Code Online (Sandbox Code Playgroud)
坏方法:
mysql -u root -p mysql
Run Code Online (Sandbox Code Playgroud)
小智 5
使用sudo更改密码:
sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'insert_password';
Run Code Online (Sandbox Code Playgroud)
来源:Phoenixnap - 用户 root localhost 的访问被拒绝
| 归档时间: |
|
| 查看次数: |
654950 次 |
| 最近记录: |