Navicat连接阿里云Mysql遇到的的坑

连上去那一刻,心态真是起飞了🤓

 

下面笔者总结安装Mysql开始所遇到的坑(Ps 笔者是阿里云的Centos6.8):

 

 

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

 

 出现类似上面问题的,就是说 你登录的账号是需要密码的,意思是没有使用密码的root@localhost 拒绝访问

 

 

先走一遍安装流程:

1 . 进入系统 使用 su 命令 进入 root 权限。

2 . 使用 rpm -qa mysql 查看是否有存在的老的版本的mysql

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 完美解决,尼玛的😭,害我折腾了一上午

 

 顶一篇 :http://www.cnblogs.com/meetrice/p/5309666.html

 

posted @ 2017-05-29 17:26  昕无旁骛  阅读(6332)  评论(2编辑  收藏  举报