我一直在按照手册在Ubuntu上安装软件套件。我完全不了解MySQL。我已经在我的Ubuntu上完成了以下安装。
sudo apt-get update
sudo apt-get install mysql-server-5.5
sudo apt-get install mysql-client-5.5
sudo apt-get install mysql-common
sudo apt-get install glade
sudo apt-get install ntp
然后我做了
cd ~/Desktop/iPDC-v1.3.1/DBServer-1.1
mysql -uroot -proot <"Db.sql"
我最终得到以下错误消息。
错误1045(28000):拒绝访问用户'root'@'localhost'(使用密码:YES)
我该如何修复它并继续?
你必须重设密码!Mac OS X(已测试并正在运行)和Ubuntu的步骤:
停止使用MySQL
sudo service mysql stop
or
sudo /usr/local/mysql/support-files/mysql.server stop
以安全模式启动:
sudo mysqld_safe --skip-grant-tables --skip-networking
(上面一行是整个命令)
这将是一个持续的命令,直到进程结束,所以打开另一个shell/终端窗口,登录没有密码:
mysql -u root
mysql> UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';
根据@IberoMedia的评论,对于新版本的MySQL,该字段被称为authentication_string:
mysql> UPDATE mysql.user SET authentication_string =PASSWORD('password') WHERE User='root';
启动MySQL使用:
sudo service mysql start
or
sudo /usr/local/mysql/support-files/mysql.server start
你的新密码是“password”。
注意:对于MySQL > 5.7版本,请尝试以下操作:
update mysql.user set authentication_string='password' where user='root';
我使用的是mysql-5.7.12-osx10.11-x86_64。dmg在Mac OS X上。
安装过程会自动为root用户设置一个临时密码。你应该保存密码。密码不可恢复。
按照说明操作:
Go to cd /usr/local/mysql/bin/
Enter the temporary password (which would look something like, "tsO07JF1=>3")
You should get the mysql> prompt.
Run, SET PASSWORD FOR 'root'@'localhost' = PASSWORD('{YOUR_PASSWORD}'); If you wish to set your password: "root" then the command would be, SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root');
Run ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
Run exit
Run ./mysql -u root -p
Type your password. In my case I would type, "root" (without quote)
That's all.
为了方便起见,您应该在PATH环境变量中添加“/usr/local/mysql/bin”。
现在你可以在任何地方输入。/mysql -u root -p,然后输入密码,你会得到mysql>提示。
在最近的MySQL版本中,MySQL中没有任何密码。用户表。
所以你需要执行ALTER USER。将这一行命令放入文件中。
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
并以init文件的形式执行(以root或mysql用户):
mysqld_safe --init-file=/home/me/mysql-init &
MySQL服务器需要停止才能启动mysqld_safe。
另外,加载这个init文件的AppArmor权限可能也有问题。阅读更多在AppArmor和MySQL。
在Ubuntu 16.04 (Xenial Xerus)和MySQL 5.7.13版本中,我能够通过以下步骤解决这个问题:
Follow the instructions from section B.5.3.2.2 Resetting the Root Password: Unix and Unix-Like Systems
MySQL 5.7 reference manual
When I tried #sudo mysqld_safe --init-file=/home/me/mysql-init & it failed. The error was in /var/log/mysql/error.log:
2016-08-10T11:41:20.421946Z 0 [Note] Execution of init_file '/home/me/mysql/mysql-init' started.
2016-08-10T11:41:20.422070Z 0 [ERROR] /usr/sbin/mysqld: File '/home/me/mysql/mysql-init' not found (Errcode: 13 - Permission denied)
2016-08-10T11:41:20.422096Z 0 [ERROR] Aborting
mysql-init的文件权限不是问题。我们需要编辑AppArmor权限。
Edit by sudo vi /etc/apparmor.d/usr.sbin.mysqld
....
/var/log/mysql/ r,
/var/log/mysql/** rw,
# Allow user init file
/home/pranab/mysql/* r,
# Site-specific additions and overrides. See local/README for details.
#include <local/usr.sbin.mysqld>
}
Do sudo /etc/init.d/apparmor reload
Start mysqld_safe again. Try step 2 above. Check file /var/log/mysql/error.log. Make sure there is no error and the mysqld is successfully started.
Run mysql -u root -p
Enter password:
Enter the password that you specified in mysql-init. You should be able to log in as root now.
Shutdown mysqld_safe by sudo mysqladmin -u root -p shutdown
Start mysqld the normal way by sudo systemctl start mysql
在服务器初始启动时,假设服务器的数据目录为空,会发生以下情况:
完成服务器的初始化。
在data目录下生成SSL证书和密钥文件。
安装并启用validate_password插件。
创建超级用户帐户“root”@“localhost”。超级用户的密码被设置并存储在错误日志文件中。
要显示它,使用以下命令:
shell> sudo grep 'temporary password' /var/log/mysqld.log
请使用临时密码登录,并自定义超级用户密码,尽快修改root用户密码:
shell> mysql -u root -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass5!';
我使用Ubuntu 16.04 (Xenial Xerus)和安装MySQL 5.7。
我也有同样的问题
禁止root用户登录。
我尝试了以下步骤:
get-select | grep mysql(获取mysql版本)。
dpkg-reconfigure mysql -服务器- 5.7
Mysql -u root -p
如果没有-p,则不会提示您询问密码。进入后,您可以按照以下步骤创建一个带有密码的用户:
CREATE USER 'your_new_username'@'your-hostname' IDENTIFIED BY 'your-password';
GRANT ALL PRIVILEGES ON *.* to 'your_new_username'@'your-hostname' WITH GRANT OPTION;
从根目录退出,从上面给出的<name>登录。
mysql -u <your_new_username> -p
由于某种原因,仍然不能输入MySQL。在所有。我建议养成使用mysql -u <name> -p的习惯。
如果其他答案都不适合您,并且您收到了以下错误:
mysqld_safe Logging to '/var/log/mysql/error.log'.
mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.
[1]+ Exit 1 sudo mysqld_safe --skip-grant-tables
按照以下命令依次执行,直到重置密码:
# Stop your server first
sudo service mysql stop
# Make the MySQL service directory.
sudo mkdir /var/run/mysqld
# Give MySQL permission to work with the created directory
sudo chown mysql: /var/run/mysqld
# Start MySQL, without permission and network checking
sudo mysqld_safe --skip-grant-tables --skip-networking &
# Log in to your server without any password.
mysql -u root mysql
# Update the password for the root user:
UPDATE mysql.user SET authentication_string=PASSWORD('YourNewPasswordBuddy'), plugin='mysql_native_password' WHERE User='root' AND Host='localhost';
# If you omit (AND Host='localhost') section, it updates
# the root password regardless of its host
FLUSH PRIVILEGES;
EXIT;
# Kill the mysqld_safe process
sudo service mysql restart
# Now you can use your new password to log in to your server
mysql -u root -p
# Take note for remote access. You should create a remote
# user and then grant all privileges to that remote user
虽然上面的答案(使用mysqladmin)在macOS v10.15 (Catalina)上有效,但在Ubuntu上无效。然后我尝试了许多其他的选项,包括MySQL的安全启动,但都不起作用。
下面是一个例子:
至少在这个版本中,我得到了5.7.28-0ubuntu0.18.04.4的答案缺少IDENTIFIED WITH mysql_native_password。5.7.28是当前LTS的默认设置,因此应该是大多数新系统的默认设置(直到Ubuntu 20.04 (Focal Fossa) LTS问世)。
我发现不能设置root密码MySQL服务器,现在应用
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_pass_here';
这是可行的。
对于那些目前的答案不工作的人,可以试试这个(在macOS上测试):
mysql -h localhost -u root -p --protocol=TCP
在此之后,将要求您输入密码,您应该使用您的操作系统用户密码。然后当你进入MySQL时,你可以运行:
select Host, User from mysql.user;
你应该看到:
MySQL [(none)]> select Host, User from mysql.user;
+-----------+------------------+
| Host | User |
+-----------+------------------+
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+------------------+
从这里你可以改变配置,编辑密码或修改拨款。
2021年。
回答Ubuntu 20.04 (Focal Fossa)(也可能是其他发行版)。
在四处游荡了几天之后…这些答案对我都没用,我就这么做了,而且成功了!
始终在Bash shell中:
sudo systemctl disable mysql
为了阻止守护进程在启动时启动。
sudo apt purge mysql-server
and
sudo apt purge mysql-community-server*
在那里,它警告你,你将删除配置文件…所以它起作用了!因为他们就是捣乱的人!
sudo autoremove
删除所有遗留的包。
然后重启(也许这是可选的,但我做到了)。
另外,我从MySQL官方网页下载了MySQL -server-8.0:
sudo apt install mysql-server
它正在工作的信号是,当您输入上面的命令时,系统要求您输入根密码。
最后:
mysql -u root -p
还有你之前输入的密码。
在服务器初始启动时,假设服务器的数据目录为空,会发生以下情况:
完成服务器的初始化。
在data目录下生成SSL证书和密钥文件。
安装并启用validate_password插件。
创建超级用户帐户“root”@“localhost”。超级用户的密码被设置并存储在错误日志文件中。
要显示它,使用以下命令:
Shell > sudo grep '临时密码' /var/log/mysqld.log
请使用临时密码登录,并自定义超级用户密码,尽快修改root用户密码:
Shell > mysql的root -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass5!