MySQL FAQs (持续更新中)

mysql Ver 14.14 Distrib 5.7.21, for Linux (x86_64) using EditLine wrapper

如何找MySQL的配置文件

windows下为my.ini
linux下在/etc/my.cnf,还可以通过命令$ whereis my查找

ERROR 2002 (HY000)

刚装完以root登录时有可能报这样的错:

ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock‘

原因是/var/lib/mysql的访问权限问题。
下面的命令把/var/lib/mysql的拥有者改为当前用户:

$ sudo chown -R root:root /var/lib/mysql

ERROR 1054 (42S22): Unknown column 'password' in 'field list'

在修改mysql数据库的user表的password字段时报错,

update user set password=password(“新密码”) where user=”用户名”;

原因是在MySQL 5.7中,password字段改名为了authentication_string,使用以下命令

update user set authentication_string=password(“新密码”) where user=”用户名”;

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

密码错误时就会出现该错误,以下是重置方法

$ sudo vi /etc/my.cnf
# 在[mysqld]段加入skip-grant-tables,作用是令MySQL不需要密码登陆

$ service mysqld restart
$ mysql -u root -p
# 回车进入MySQL

> use mysql;
> update set authentication_string=password('newpassword') where user='root';
> flush privileges;
> quit;

$ sudo vi /etc/my.cnf
# 删除skip-grant-tables
$ service mysqld restart

$ mysql -u root -p
# 以'newpassword'即可登录

flush privileges 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里。MySQL用户数据和权限有修改后,希望在"不重启MySQL服务"的情况下直接生效,那么就需要执行这个命令。通常是在修改ROOT帐号的设置后,怕重启后无法再登录进来,那么直接flush之后就可以看权限设置是否生效。而不必冒太大风险。

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executin

密码不和MySQL的意,要改:

alter user 'root'@'localhost' identified by 'password';
原文地址:https://www.cnblogs.com/sequix/p/8525409.html