远程连接 linux mysql,Navicat远程连接Linux上MySql

Navicat远程连接Linux上MySql

类别: 技术·运维

时间:2018-10-16 23:52:51

字数:2406

版权所有,未经允许,请勿转载,谢谢合作~

###前言

这本是件无比简单的事,因为屡次遇到几个相同的问题,因此记录下来,供来者参考。包括:

Centos7下MySql安装

MySql创建用户、设置密码

MySql密码忘记后重置

Navicat远程连接MySql的方式

###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

全部留言

我要留言

内容:

网名:

邮箱:

个人网站:

发表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值