连上去那一刻,心态真是起飞了🤓html
下面笔者总结安装Mysql开始所遇到的坑(Ps 笔者是阿里云的Centos6.8):mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)sql
出现相似上面问题的,就是说 你登陆的帐号是须要密码的,意思是没有使用密码的root@localhost 拒绝访问数据库
先走一遍安装流程:安全
1 . 进入系统 使用 su 命令 进入 root 权限。服务器
2 . 使用 rpm -qa mysql 查看是否有存在的老的版本的mysqltcp
3 . 若是存在旧版本的mysql 使用 yum remove mysql 命令删除函数
4 . 使用 yum install mysql 命令安装客户端数据库阿里云
5 . 使用 yum install mysql-server 命令安装服务端数据库加密
6 . 使用 /etc/init.d/mysqld start 来启动数据库
7 . 使用 mysql -u root -p 链接数据库(由于第一次链接使用,因此没有密码 因此能够直接按回车进入)
至此 在Linux下的 Mysql 也算安装完成了。
下面来为root用户设置密码:
我使用的是
1. mysqladmin -u root -p password newpassword 这个命令,不过有弊端,这个方法在设置新密码后会提示输入旧的密码才能设置成功,第一次使用数据库没有密码的 可使用这个方法,提示输入旧密码时直接回车就OK,除此以外 并不适用于忘记已存在的旧密码的用户。
2. 因为全部的用户信息都是存放在mysql库(默认库)的user表中,因此只要root用户登陆到了Mysql的服务器中,适用UPDATE语句就能够直接修改本身的密码了。
UPDATE语句的语法格式是:
1 UPDATE mysql.user set Password=PASSWORD('new_password') where User='username' and Host='hostname'; 2 例如 3 UPDATE mysql.user set Password=PASSWORD('123456') where User='root' and Host='localhost';
记得执行完UPDATE语句后,使用 FLUSH PRIVILEGES从新加载权限表(update语句不能刷新权限表,因此必定要使用FLUSH PRIVILEGES语句刷新权限表,不然修改后的密码不能生效)
3. 使用SET语句修改root密码
当用户登陆到Mysql服务器以后,还能够经过SET语句修改密码,语法格式以下:
SET PASSWORD=PASSWORD('new_password');
要注意的是 SET 语句没有对密码的加密功能,因此使用PASSWORD()函数进行加密,且密码须要使用单引号括起来。
上面三种方法应对都是常规状况,方法1区别于方法2/3,方法1不须要登陆到Mysql服务器,方法2/3都是在Mysql服务器对用户信息表操做完成密码的更改。
不过每每咱们遇到的是一些比较极端的状况,当咱们root用户的密码丢失了怎么办呢,这时咱们并不能登陆到Mysql服务器,也不知道旧密码;这时Mysql提供了对应的应急处理机制,经过特殊的方法登陆到 Mysql服务器:
1. 中止 Mysql 服务
使用 service mysql stop 命令中止
2. 使用 mysqld_safe --skip-grant-tables 命令,能够中止Mysql的权限判断,也就是说能够任何用户直接访问数据库,而且能够启东Mysql服务。
3. 执行完第二条命令后,打开新的终端,此时即可以直接登陆Mysql服务,登陆以后的密码设置操做参考👆。
下面讲讲端口和防火墙的问题
首先要确认的是3306端口是否是对外开放了。Mysql默认状态是不开放对外访问的,因此这应该是大多数问题所在。
***开启3306端口及经常使用的其它端口***
查看是否有这个文件/etc/sysconfig/iptables,若是没有
iptables -P OUTPUT ACCEPT
service iptables save 进行保存,默认就保存到了/etc/sysconfig目录下的iptables文件中
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT #容许3306数据库端口经过防火墙
service iptables save
cat /etc/sysconfig/iptables有3306这条信息
service iptables restart就ok咯
Ps: 在Mysql服务下 使用show global variables like 'port' 查看端口号,默认是3306
经过编辑 /etc/my.cnf 使用 port=newport 来修改新的端口。
常常碰到的就是这些问题了,若是上述全部的问题都尝试过了,仍是没有解决,那么能够考虑是否是运营商的安全组的问题。
笔者最后的问题就是出在 阿里云-安全组上
笔者 设置了远程主机链接的权限 设置了3306经过防火墙的限制 ,能够navicat仍是链接不上Mysql服务,后来 去看了下阿里云的安全组,简单了解下设置了。
bingou 完美解决,尼玛的😭,害我折腾了一上午