安装MySQL:Access denied for user 'root'@'localhost' (using password: NO)

打算将这个个人博客的宿主服务器降配到1核1G(阿里云服务器,为了省点钱也是蛮拼的。),于是就得将系统也切换到CentOS,就得将数据库切换到MySQL。本来安装是很顺利的,后面居然有个坑,网上无解,只有相似的解答,所以记录下来供大家参考,安装如下,不多说了很简单:
wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
rpm -ivh mysql57-community-release-el7-9.noarch.rpm
yum install mysql-community-server
service mysqld restart
ps -ef | grep mysql
开机自动启动
systemctl enable mysqld.service
如下图,安装成功的画面。mysql替代了mariadb,至于mariadb是什么,自己可以去百度,这里不是我要说的重点。

重点来了,当输入mysql -u root时候,始终返回:
Access denied for user 'root'@'localhost' (using password: NO)
如果输入mysql -u root -p,会被要求输入密码,这个密码是多少呢,没人告诉你,网上有很多告诉通过安全模式强制去重置密码,我总觉得不是根本的方法,而要弄清楚原因,终于找到了。那就是看安装日志,初始密码放在了日志文件中,使用命令查看日志如下:
more /var/log/mysqld.log

然后输入密码,就可以更改密码了

修改密码要求密码有一定的复杂度,试了好多次,终于行了,见图上。
set password=password('yourpassword');

支持中文的话,要对表进行设置:
alter table Article convert to character set utf8;

打开端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
systemctl restart firewalld

或者使用iptables
关闭firewall
service firewalld stop
systemctl disable firewalld.service #禁止firewall开机启动

安装防火墙
yum install iptables-services
配置防火墙
vi /etc/sysconfig/iptables #编辑防火墙配置文件
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
service iptables start #开启
systemctl enable iptables.service #设置防火墙开机启动
Posted by 何敏 on 2017/03/11 20:20:41