Linux系统下怎么解决无法远程如何连接远程数据库数据库问题

正文 Linux下mysql允许远程连接怎么设置?
Linux下mysql允许远程连接怎么设置?
发布时间: & 编辑:www.jquerycn.cn
本文介绍了linux系统中mysql用户允许远程连接的设置方法,有需要的朋友参考下。
/usr/local/mysql/bin/mysql -u root -p& (输入密码进入mysql)&
2、进入mysql,输入:
复制代码 代码示例:
3、查看user表的情况
复制代码 代码示例:
&SELECT Host,User FROM&
//指明主机名称,&%&表示匹配所有字符串
复制代码 代码示例:
UPDATE user SET Host = '%' WHERE User= 'root' LIMIT 1;&
5、输入如下命令让刚才设置的命令生效
复制代码 代码示例:
Query OK, 0 rows affected (0.00 sec)
注意,在mysql 命令行形式下一定要输入&;&
按照前面五个步骤完成之后,通过控制台输入:
复制代码 代码示例:
[root@linux ~]# mysql -h localhost -u root -p
Enter password:
ERROR ): Access denied for user 'root'@'localhost' (using password: YES)
不让这么连接数据库
原因:是因为host对应的user字段是空的,我们需要将其改为root即可
复制代码 代码示例:
mysql& select host,
+-----------+------+
| host&&&&& | user |
+-----------+------+
| %&&&&&&&& | root |
| 127.0.0.1 | root |
| linux&&&& |&&&&& |
| linux&&&& | root |
| localhost |&&&&& |
+-----------+------+
5 rows in set (0.00 sec)
解决办法一:
复制代码 代码示例:
mysql& update user set user='root' where host='localhost';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1& Changed: 1& Warnings: 0
Query OK, 0 rows affected (0.00 sec)
解决办法二:
将localhost改为本机的IP地址,则能够识别了。
复制代码 代码示例:
[root@linux ~]# mysql -h 172.16.42.68 -u root -p
Enter password:
Welcome to the MySQL monitor.& C or \g.
Your MySQL connection id is 157
Server version: 5.1.66 Source distribution
Copyright (c) , Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
Type '' or '\h' for help. Type '\c' to clear the current input statement.您可能感兴趣的文章:Linux下解决无法远程连接数据库问题Linux下解决无法远程连接数据库问题会飞的科技百家号起因今天在ubuntu16.04环境下通过mysql workbench访问远程数据库时,发现无法连接问题,解决思路及方法记录如下,不足之处,请多指教。问题通过workbench输入密码访问时报这个错:思路网络问题,更换网络之后重启workbench和MySQL服务进行连接,依旧是这个错。密码错误,通过ssh远程登录服务器查看远程mysql的password,发现所填密码正确。远程mysql没有访问权限,一般有两种方法: 改表法 和 授权法 :授权法:第一步:尝试打开 /etc/mysql/my.cnf 配置文件,若文件不存在或者内容为空,则打开下面的文件路径:sudo vim /etc/mysql/my.cnf//或:sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf第二步:在文件中查找下面一行,如果该行前没有加 # ,可在该行前添加#进行注释,保存退出。改表法:两种方法我尝试了一下,错误类型变成了:Can't connect to MySQL server on ...看到这个错误我想到了远程服务器防火墙的原因,于是我有了下面的思路:4. 远程ubuntu服务器的防火墙原因导致无法本地访问远程的 3306 端口sudo ufw disable //关闭防火墙,该命令需在root权限下执行,慎用再次通过workbench连接远程mysql,连接成功。原因我的本地无法连接远程是因为远程ubuntu服务器防火墙默认禁止外部访问3306端口。做法sudoufwenable //开启防火墙sudoufwallow3306 //允许外部访问3306端口总结1. 一般的无法连接远程mysql问题是由上面四个愿意导致的,这里不做赘述。2. 在遇到一个问题时首先要做的不是立刻找做法解决这个问题,而应该是思考为什么会出现这个问题,产生这个问题的原因,做到对症下药。3. 自己还有很多不足,戒骄戒躁才能进步。附赠Ubuntu常用 ufw防火墙命令如果有任何疑问,欢迎添加qq群测试入门大神
共同学习~本文由百家号作者上传并发布,百家号仅提供信息发布平台。文章仅代表作者个人观点,不代表百度立场。未经作者许可,不得转载。会飞的科技百家号最近更新:简介:专注于互联网动态及互联网产品介绍分析作者最新文章相关文章Linux上mysql开启远程连接方法_解决MySQL不允许远程访问的方法
新安装的MySQL是默认不开户远程访问权限的,也就不能外部连接MySQL。这样对想远程调用MySQL的数据很不方便。下面我们来看下如何设置允许远程连接MySQL数据库。
还没有安装Mysql的可以参考
一般来说mysql安装时都是关闭远程连接的,但是如果一台电脑需要多个网站连接,而这些网站又不是自己服务器上,那么就需要把mysql数据库的远程开启,开启mysql远程登录的用户都是存储在mysql数据库中的user表中。默认情况下,Mysql为了安全起见是不支持远程访问和连接的。不过有的时候,工作需要你要从家里或者网页来访问Mysql,本文就介绍下怎么在Linux系统上给Mysql创建一个远程连接的账户,支持远程访问.
任务: MySQL服务远程访问权限
你需要执行下面的这些命令,让Mysql运行支持远程连接.
步骤# 1: 登录到SSH&
首先通过ssh登录到Mysql数据库服务器去,然后使用root进入Mysql:
ssh user@server1.cyberciti.biz
### login as the root using su or sudo ##
或者直接使用ssh登录
ssh root@server1.cyberciti.biz
步骤# 2: E编辑my.cnf文件
连接成功之后,我们就来编辑Mysql的配置文件:my.cnf&
如果你的系统是Debian Linux&那文件位置是:/etc/mysql/my.cnf&.
如果你的系统是&Red Hat Linux/Fedora/Centos Linux&那文件位置是:&/etc/my..
如果你的系统是&FreeBSD&那文件位置是:&/var/db/mysql/my.cnf&.
然后我们就编辑/etc/my.cnf, 执行:
# vi /etc/my.cnf
步骤 # 3: 打开编辑后,我们找到这行(vi里面,先按下esc,然后输入/[mysqld],再enter,即可查找,按n可以看下一个):
然后把跳过的IP设置好,让帮到的IP为你自己要进入连接的IP,
bind-address=YOUR-SERVER-IP
比如,你的MySQL 服务器IP是 65.55.55.2 ,那修改后大概是这样:
= /var/run/mysqld/mysqld.pid
= /var/run/mysqld/mysqld.sock
= /var/lib/mysql
= /usr/share/mysql/English
bind-address
= 65.55.55.2
# skip-networking
bind-address: 绑定的IP
skip-networking&: 不再监听TCP/IP 连接. 所有的Mysql交互都要通过Unix sockets. 如果你只想本地请求的话强烈建议开启,因为我们现在是开启远程连接,所以在这里我们就给注释掉,在前面加上#号就可以了.
步骤# 4 保存文件重启Mysql服务
如果是Debian / Ubuntu Linux系统,输入下面的命令重启Mysql服务
# /etc/init.d/mysql restart
如果是RHEL / CentOS / Fedora / Scientific Linux系统,输入下面的命令重启Mysql服务
# /etc/init.d/mysqld restart
如果是FreeBSD系统,输入下面的命令重启Mysql服务
# /usr/local/etc/rc.d/mysql-server stop
# /usr/local/etc/rc.d/mysql-server start
# /usr/local/etc/rc.d/mysql-server restart
步骤# 5 给远程IP授权
连接到Mysql
$ mysql -u root -p mysql
那我们就授权给新的数据库
我们想远程IP为202.54.10.20,通过Mysql用户bar访问数据库foo,那我们需要在Mysql(mysql& prompt)下输入:
mysql& CREATE DATABASE
mysql& GRANT ALL ON foo.* TO bar@'202.54.10.20' IDENTIFIED BY 'PASSWORD';
那怎么给已存在的库授权呢?
加入你需要从远程IP202.54.10.20通过Mysql用户webadmin访问webdb库,那命令就是这样的了
mysql& update db set Host='202.54.10.20' where Db='webdb';
mysql& update user set Host='202.54.10.20' where user='webadmin';
步骤# 6: 退出MySQL
退出Mysql,使用:mysql& exit
步骤# 7: 打开防火墙3306端口
我们需要打开iptables或者BSD的pf防火墙3306 TCP端口
通用Mysql3306端口的iptables(vi /etc/sysconfig/iptables)防火墙规则
/sbin/iptables -A INPUT -i eth0 -p tcp --destination-port 3306 -j ACCEPT
或者你只允许web那台服务器(IP为10.5.1.3)可以访问:
/sbin/iptables -A INPUT -i eth0 -s 10.5.1.3 -p tcp --destination-port 3306 -j ACCEPT
或者只允许局域网192.168.1.0/24段访问
/sbin/iptables -A INPUT -i eth0 -s 192.168.1.0/24 -p tcp --destination-port 3306 -j ACCEPT
&最后重启防火墙使配置生效(RHEL / CentOS):
# service iptables save
# /etc/init.d/iptables restart
下面是一个简单的FreeBSD / OpenBSD / NetBSD pf 防火墙规则(vi&/etc/pf.conf)
通用BSD系统打开3306端口:
pass in on $ext_if proto tcp from any to any port 3306
或者只允许web服务器(IP为10.5.1.3)等访问
pass in on $ext_if proto tcp from 10.5.1.3 to any port 3306
flags S/SA synproxy state
步骤# 8: 测试远程连接
从你自己的机器上测试连接:
$ mysql -u webadmin &h 65.55.55.2 &p
-u webadmin: webadmin 是Mysql的用户名
-h IP或者主机名: 65.55.55.2 是MySQL的IP或正式主机域名
-p :弹出输入密码窗口
还可以使用telnet或nc命令来测试3306连接:
$ echo X | telnet -e X 65.55.55.2 3306
$ nc -z -w1 65.55.55.2 3306
Connection to 65.55.55.2 3306 port [tcp/mysql] succeeded!
------分隔线----------------------------
在Linux下bind只是一个隐藏后门, 一般把文件删除就行了 你用什么查的? 它是报告465端...
自从Meltdown 和 Spectre 的CPU漏洞爆出之后,几乎所有采用英特尔、AMD和ARM芯片的产...
shell 脚本是一个包含命令序列的文本文件。当运行文件(或脚本)时,将执行该文件中包...
在一个新进程建立时,将会建立自己的内存空间,32位的操作系统下,每个进程最大可寻址...
网络设备被激活时调用open(即设备状态由down--〉up)。所以实际上很多在initialize中的...博客分类:
mysql远程连接失败的解决方法(CentOS版)(1)先将mysql服务停掉# /etc/init.d/mysqld stop(2)查看mysql配置文件# vi /etc/my.cnf特别要留意其中的两项:bind_address和skip_networking,bind_address一定不能为127.0.0.1,否则只能在本地连接,skip_networking一定不能出现,否则只接受unix socket而不能提供tcp socket服务,建议将bind_address和skip_networking直接都注释掉。(3)重启mysql服务# /etc/init.d/mysqld start(4)对用户授权,允许指定用户远程访问,最简单的方式是将mysql库中user表中的对应的用户的host设置为%,亦即允许该用户从任意ip远程访问
# mysql -u root -ppassword
//进入mysql控制台# mysql&# mysql&update user set host = '%' where user = 'root';
//这个命令执行错误时可略过# mysql&# mysql&select host, //检查‘%’ 是否插入到数据库中#mysql&quit(5)一般情况下此时就能满足远程访问的要求,但对于某些系统还需要检查防火墙设置,和ip访问策略,以防系统对网络访问的限制造成无法远程访问mysql对于CentOS系统而言,最好检测iptables设置。具体步骤如下  5.1 暂停iptables服务    # service iptables stop  5.2 查看iptables配置文件    # vi /etc/sysconfig/iptables  5.3
也许会看到如下内容    :OUTPUT ACCEPT [185920]    -A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT    #-A INPUT -s 118.144.89.18 -p tcp -m tcp --dport 3306 -j ACCEPT    #-A INPUT -s 123.127.177.239 -p tcp -m tcp --dport 3306 -j ACCEPT    建议直接开放3306端口,而不是仅限定某个ip才可以访问3306  5.4 重启iptables服务    # service iptables start
仅作记录,以备不时只需。
浏览 11099
浏览: 363329 次
来自: 上海
&script&alert(d);&/scr ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'Linux中无法远程连接数据库问题的解决方法
转载 &发布时间:日 10:14:00 & 作者:如是说
这篇文章主要给大家介绍了关于Linux中无法远程连接数据库问题的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
今天在ubuntu16.04环境下通过mysql workbench访问远程数据库时,发现无法连接问题,解决思路及方法记录如下,不足之处,请多指教。
通过workbench输入密码访问时报这个错:
Your connection attempt failed for user 'root' from your host to server at 118.89.153.162:3306: Access denied for user 'root'@'118.89.153.162' (using password: YES)
网络问题,更换网络之后重启workbench和MySQL服务进行连接,依旧是这个错。
密码错误,通过ssh远程登录服务器查看远程mysql的password,发现所填密码正确。
远程mysql没有访问权限,一般有两种方法:改表法和授权法&& :&
第一步:尝试打开/etc/mysql/my.cnf配置文件,若文件不存在或者内容为空,则打开下面的文件路径:
sudo vim /etc/mysql/my.cnf
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
第二步:在文件中查找下面一行,如果该行前没有加#,可在该行前添加#进行注释,保存退出。
bind-address = 127.0.0.1
mysql&GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION //赋予任何主机访问以及修改所有数据的权限
//例如,你想root用户使用root从任何主机连接到mysql服务器的话。
//GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
//如果你想允许用户root从ip为192.168.1.124的主机连接到mysql服务器,并使用123456作为密码
//GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.124'IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql&flush privileges //权限刷新,使修改立即生效
sudo /etc/init.d/mysql restart //或: service mysql restart 重启mysql服务
两种方法我尝试了一下,错误类型变成了:
Can't connect to MySQL server on ...
看到这个错误我想到了远程服务器防火墙的原因,于是我有了下面的思路:
4. 远程ubuntu服务器的防火墙原因导致无法本地访问远程的3306端口
sudo ufw disable //关闭防火墙,该命令需在root权限下执行,慎用
再次通过workbench连接远程mysql,连接成功。
我的本地无法连接远程是因为远程ubuntu服务器防火墙默认禁止外部访问3306端口。
sudo ufw enable //开启防火墙
sudo ufw allow 3306 //允许外部访问3306端口
1. 一般的无法连接远程mysql问题是由上面四个愿意导致的,这里不做赘述。
2. 在遇到一个问题时首先要做的不是立刻找做法解决这个问题,而应该是思考为什么会出现这个问题,产生这个问题的原因,做到对症下药。
3. 自己还有很多不足,戒骄戒躁才能进步。
Ubuntu常用ufw防火墙命令
//安装方法
sudo apt-get install ufw
sudo ufw enable
sudo ufw default deny //开启了防火墙并随系统启动同时关闭所有外部对本机的访问,本机访问外部正常。
sudo ufw disable
//查看防火墙状态
sudo ufw status
//开启/禁用相应端口或服务举例
sudo ufw allow 3306 //允许外部访问3306端口
sudo ufw delete allow 3306 禁止外部访问3306端口
sudo ufw allow from 118.89.153.162 //允许此IP访问所有的本机端口
sudo ufw deny smtp //禁止外部访问smtp服务
sudo ufw delete allow smtp //删除上面建立的某条规则
sudo ufw deny proto tcp from 10.0.0.0/8 to 192.168.0.1 port 22 //要拒绝所有的TCP流量从10.0.0.0/8 到192.168.0.1地址的22端口
//推荐使用
sudo apt-get install ufw
sudo ufw enable
sudo ufw default deny
参考文章:
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具

我要回帖

更多关于 plsql连接远程数据库 的文章

 

随机推荐