[root@mytestlnx02 ~]# mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
就是这个错误!!!解决方案如下:
1、检查mysql
服务是否启动,如果启动,关闭mysql
服务
ps -ef | grep -i mysql
service mysql stop
2、修改mysql
的配置文件my.cnf,my.cnf
配置文件的位置,一般在/etc/my.cnf
,有些版本在/etc/mysql/my.cnf
,在配置文件中,增加2行代码
[mysqld]
skip-grant-tables
作用是登录mysql
的时候跳过密码验证
3、然后启动mysql
服务,并进入mysql,
修改密码
service mysqld start
mysql -u root
update mysql.user set authentication_string=password('root_password') where user='root';
flush privileges;
exit
到此为止,如果没有出现其他错误,那你就是修改成功了,接下来只需要关闭服务,把第2步中修改配置文件的那行注释掉,重启mysql就可以用新密码登陆了;
补充个其它内容,到了这一步,顺便就把编码格式改了吧,配置默认编码为utf8
修改/etc/my.cnf配置文件,在[mysqld]下添加编码配置,如下所示:
character_set_server=utf8
init_connect='SET NAMES utf8'
port=33066
lower_case_table_names = 1 #是否区分大小写,默认0区分;1不区分;
4、注意,这里补充一个问题,mysql某个版本之后,修改密码时,新密码有一个策略问题,修改时时候经常发现修改失败,就是下面这个error:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements;
解决方案就是,修改密码策略,或者设置一个符合密码策略的密码,有人会问,密码策略是什么呢,往下看:
执行 mysql> SHOW VARIABLES LIKE 'validate_password%';查看密码策略
+-------------------------------------------------------+-------------+
| Variable_name | Value |
+-------------------------------------------------------+--------------+
| validate_password_check_user_name | OFF |
| validate_password_dictionary_file | |
| validate_password_length | 8 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | MEDIUM |
| validate_password_special_char_count | 1 |
+-------------------------------------------------------+--------------+
注意紫色的两行,第1个有效的密码长度是8,第2个有效的密码策略是medium(中级);
你要做的就是将密码策略设置成低级(LOW):
mysql> set global validate_password_policy=LOW;
然后再执行第3步中修改密码的语句
update mysql.user set authentication_string=password('root_password') where user='root';
至此应该就没有什么问题了;
5、哦哦还有,让别人连接你的mysql时,往往要给他开一个新账号方便管理,千万不要让他和你用同一个账号;这里再补充一点,如何创建一个新账号,并允许对方远程连接访问:下面两种情况,看你是哪一种
新建用户远程连接mysql数据库
grant all on *.* to admin@'%' identified by '123456' with grant option;
flush privileges;
允许任何ip地址(%表示允许任何ip地址)的电脑用admin帐户和密码(123456)来访问这个mysql server。
注意admin账户不一定要存在。
支持已有root用户允许远程连接mysql数据库
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
flush privileges;
如果密码错了再次执行第4步;
说明一下,这只是属于低级的操作方法,团队开发的时候可以快速搭建好数据库;如果你是在线上服务器,还是去找更完善的解决方案,这个不安全
这是我第一次在linux上搞mysql,也是遇上问题才找解决方法,也许你又其它更好的方案,可以留言,安装有新问题,也可以来留言
====这是分割线 2019年6月4日补充====================================================================
如何卸载yum方式安装的mysql? 安装出错了,总想卸载以后重新安装:
$ yum remove mysql mysql-server mysql-libs compat-mysql51
$ rm -rf /var/lib/mysq
$ rm /etc/my.cnf
查看是否还有mysql软件:
$ rpm -qa|grep mysql
如果存在的话,继续删除即可,删除方式:yum remove + 【名字】。