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

连上去那一刻,心态真是起飞了🤓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 完美解决,尼玛的😭,害我折腾了一上午

 

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

相关文章
相关标签/搜索