Navicat远程连接Linux上MySql
类别: 技术·运维
时间:2018-10-16 23:52:51
字数:2406
版权所有,未经允许,请勿转载,谢谢合作~
###前言
这本是件无比简单的事,因为屡次遇到几个相同的问题,因此记录下来,供来者参考。包括:
###Centos7下MySql安装
安装mysql安装mysql 5.7例子
下载源
安装源
安装mysql
```
wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
yum localinstall mysql57-community-release-el7-8.noarch.rpm
yum install mysql-community-server
```
查看状态
启动
重启
停止
```
systemctl status mysqld
systemctl start mysqld
systemctl restart mysqld
systemctl stop mysqld
```
###MySql创建用户、设置密码
mysql 5.7之前root没有默认密码,可以直接登录。而之后版本则需要在/var/log/mysqld.log日志中找到默认密码。
```
head -20 /var/log/mysqld.log
```
可以发现 A temporary password is generated for root@localhost: xxxx
xxxx便是你的默认密码
进入MySql并修改默认密码,flush privileges;是为了刷新权限,可以理解为刷新缓冲,每次权限相关有修改都可以调用一次。
```
mysql -u root -p
set password for root@localhost = password('你的新密码');
flush privileges;
```
为了安全,我们一般不会使用root账户,而是在创建自己的数据库之后,新建用户,并且把该数据库授权给该用户,比如:
```
CREATE DATABASE your_database_name;
CREATE USER 'your_name'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL ON your_database_name.* TO 'username'@'localhost';
```
其中localhost是表示该用户只能从本地连接该数据库。还可以设置成IP,表示只有该IP可连接该数据库。设置成%表示所有机器都可使用该账户连接该数据库。出于安全需要,尽量使用localhost或特定IP。
###MySql密码忘记后重置
mysql忘记密码真是不少见,有时虽然密码是对的,却报错:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
此时只好重置密码。
因为不知道密码,所以我们无法修改密码,为此需要在mysql配置/etc/my.cnf 增加一行:
```
skip-grant-tables
```
跳过密码,并重启mysql。
此时可以可以mysql进行授权:
```
mysql -uroot -p
grant all privileges on your_database_name.* to 'your_name'@'localhost';
```
可能报错 ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
原来还是“缓存问题”, 刷新后重复上述操作即可。
```
flush privileges;
```
甚至为了减小影响,重新创建用户,上述已讲,不再重复。
###Navicat远程连接MySql的方式
本例navicat版本为11.1.13,如果以下操作更旧版本不能成功,可考虑升级。
如果有允许远程登录的的账号,则直接在navicat选项“常规”:
IP + 端口3306 + mysql username + mysql password
这时可能会因为服务器防火墙未对外开启3306端口而失败,需开启该端口并重启防火墙:
```
firewall-cmd --zone=public --add-port=3306/tcp --permanent
systemctl restart firewalld.service
```
可以成功!不过这样并不安全,并且也不适用于localhost权限的账户,不推荐上述方式,可恢复原样。
关闭对外3306端口并重启,顺便核对现已开启的对外端口
```
firewall-cmd --permanent --zone=public --remove-port=3306/tcp
systemctl restart firewalld.service
firewall-cmd --zone=public --list-ports
```
更好的方式是:
navicat选项“常规”:
主机名localhost + 端口3306 + mysql username + mysql password
同时,选项“ssh” 勾选“使用ssh通道”:
主机IP + 端口22 + linux username + linux password
全部留言
我要留言
内容:
网名:
邮箱:
个人网站:
发表