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