mysql远程表访问设置

使用MySQL FEDERATED存储引擎,没有对表的本地数据文件(比如,没有.MYD文件)。

取而代之地,一个远程数据库存储那些正常地应该在表中的数据。

这使得MySQL客户端API来读,删除,更新和插入数据的使用成为必要。

数据取回被通过SELECT * FROMtbl_nameSQL语句来初始化。

要读这个结果,通过使用mysql_fetch_row() C API 函数,行被一次取一个,然后从SELECT结果包中的列转换成FEDERATED处理器期望的格式。

基本流程如下:
1. SQL调用被本地发布
2. MySQL处理器API (数据以处理器格式)
3. MySQL客户端API (数据被转换成SQL调用)
4. 远程数据库-> MySQL客户端API
5. 转换结果包(如果有的话)到处理器格式
6. 处理器API -> 结果行或受行影响的对本地的计数
使用FEDERATED表的步骤是非常简单的。

通常,你运行两个服务器,要么在同一个主机上,要么在不同主机上。

(一个FEDERATED表使用其它被同一服务器管理的表也是可能的。

虽然只有极少的点要这么做)。

首先,你必须在你想要用FEDERATED表访问的远程服务器上有一个表。

假设,远程的表在FEDERATED数据库中并且被如下定义:
CREATE TABLE test_table (
id int(20) NOT NULL auto_increment,
name varchar(32) NOT NULL default '',
other int(20) NOT NULL default '0',
PRIMARY KEY (id),
KEY name (name),
KEY other_key (other)
)
ENGINE=innodb
DEFAULT CHARSET=utf8;
ENGINE表选项可能命名任何存储引擎,该表需要不是一个MyISAM表。

接着,在本地服务器上为访问远程表创建一个FEDERATED表:
CREATE TABLE federated_table (
id int(20) NOT NULL auto_increment,
name varchar(32) NOT NULL default '',
other int(20) NOT NULL default '0',
PRIMARY KEY (id),
KEY name (name),
KEY other_key (other)
)
ENGINE=FEDERATED
DEFAULT CHARSET=utf8
CONNECTION='mysql://xtsv:123456@192.168.1.203:3306/xt_dbs/test_table';
(注意: CONNECTION 替代用在先前版本的MySQL里的COMMENT)。

除了ENGINE表选项应该是FEDERATED,并且CONNECTION表选项是给FEDERATED 指明如何连接到远程服务器上的连接字符串之外,这个表的结构必须完全与远程表的结构相同。

FEDERATED引擎仅创建在已联盟数据库中的test_table.frm文件。

远程主机信息指明本地服务器要连接到的远程服务器,数据库和表信息指明哪一个远程表要被作为数据文件来用。

在这个例子中。

远程服务器被指定来作为远程主机在9306端口上运行,所以你要启动服务器,让它监听9306端口。

在CONNECTION选项中的连接字符串的一般形式如下:
scheme://user_name[:password]@host_name[:port_num]/db_name/tbl_name
只有mysql在这一点被支持为scheme,密码和端口号时可选的。

这里有一些连接字符串的例子:
CONNECTION='mysql://username:password@hostname:port/database/tablenam e'
CONNECTION='mysql://username@hostname/database/tablename' CONNECTION='mysql://username:password@hostname/database/tablename'
为指定连接字符串使用CONNECTION是非可选,并且在将来可能会改变。

当你使用FEDERATED表的时候,要记得这个,因为这意味着当将来发生那种改变之时,可能被要求。

因为任何被用的密码作为纯文本被存在连接字符串中,它可以被任何使对FEDERATED表使用SHOW CREATE TABLE或SHOW TABLE STATUS的用户,或者在INFORMATION_SCHEMA数据库中查询TABLES表的用户看见。

FEDERATED支持及不支持的如下:
·在第一个版本中,远程服务器必须是一个MySQL服务器。

FEDERATED对其它数据库引擎的支持可能会在将来被添加。

·FEDERATED表指向的远程表在你通过FEDERATED表访问它之前必须存在。

·一个FEDERATED表指向另一个FEDERATED表是可能的,但是你必须小心不要创建一个循环。

·没有对事务的支持。

·如果远程表已经改变,对FEDERATED引擎而言是没有办法知道的。

这个的原因是因为这个表必须象数据文件一样工作,除了数据库其它任何都不会被写入。

如果有任何对远程数据库的改变,本地表中数据的完整性可能会被破坏。

·FEDERATED存储引擎支持SELECT, INSERT, UPDATE, DELETE和索引。

它不支持ALTER TABLE, DROP TABLE或任何其它的数据定义语言语句。

当前的实现不使用预先准备好的语句。

·执行使用SELECT, INSERT, UPDATE和DELETE,但不用HANDLER。

·FEDERATED表不能对查询缓存不起作用。

这些限制中的一些在FEDERATED处理机的将来版本可能被消除。

合集下载

mysql federated的用法

mysql federated的用法

mysql federated的用法MySQL Federated的用法MySQL Federated是MySQL的一个存储引擎,可以在不同的MySQL 服务器之间实现数据共享和远程访问。

下面列举了一些MySQL Federated的常见用法,并详细讲解。

1. 什么是MySQL Federated?MySQL Federated是一种基于网络的存储引擎,它可以在MySQL 服务器之间远程共享和访问数据。

通过联合多个MySQL服务器,可以实现数据的分布式存储和访问。

2. 配置MySQL Federated引擎要使用MySQL Federated,需要进行一些配置步骤:•确保MySQL服务器已启用Federated存储引擎。

可以通过检查show engines命令的输出来验证。

•在MySQL配置文件中启用Federated存储引擎。

找到[mysqld]部分,在其中添加一行:federated。

•重启MySQL服务器,使配置生效。

使用MySQL Federated时,需要在本地服务器上创建Federated 表,该表实际上是对远程服务器上表的引用。

可以通过以下步骤创建Federated表:1.在本地服务器上创建一个表,定义表的结构和字段。

2.使用CREATE TABLE语句创建Federated表,并指定远程服务器的连接信息和表名。

例如:CREATE TABLE federated_table(id INT(10) NOT NULL AUTO_INCREMENT,name VARCHAR(50),PRIMARY KEY(id))ENGINE=FEDERATEDCONNECTION='其中,remote_user是远程服务器的用户名,remote_password是远程服务器的密码,remote_host是远程服务器的主机名或IP地址,remote_port是远程服务器的端口号,remote_db是远程服务器的数据库名,remote_table是远程服务器上的表名。

Ubuntu20.04安装和配置MySql5.7的详细教程

Ubuntu20.04安装和配置MySql5.7的详细教程

Ubuntu20.04安装和配置MySql5.7的详细教程⽬录1. Ubuntu换源2. 安装mysql3.新建⽤户并赋权4. 数据库的备份及恢复5. Navicat 远程连接数据库6. 卸载mysql1. Ubuntu换源ubuntu 20.04系统⾃带源直接安装是MySQL 8.0,我要安装MySQL 5.7的版本的所以先进⾏换源。

1.1 备份原来的sorce⽂件sudo cp /etc/apt/sources.list /etc/apt/sources.list.old1.2 修改sources.list⽂件sudo vim /etc/apt/sources.list我选择的是清华镜像源。

将sources.list内容清空,然后选择⼀个源粘贴到sources.list,保存退出。

# 清华镜像源deb https:///ubuntu/ xenial main restricted universe multiversedeb-src https:///ubuntu/ xenial main restricted universe multiversedeb https:///ubuntu/ xenial-updates main restricted universe multiversedeb-src https:///ubuntu/ xenial-updates main restricted universe multiversedeb https:///ubuntu/ xenial-backports main restricted universe multiversedeb-src https:///ubuntu/ xenial-backports main restricted universe multiversedeb https:///ubuntu/ xenial-security main restricted universe multiversedeb-src https:///ubuntu/ xenial-security main restricted universe multiverse1.3 更新镜像源和软件# 更新镜像源sudo apt-get update# 更新软件sudo apt-get upgrade2. 安装mysql2.1 apt-get install ⽅式安装这种⽅式需要服务器能联⽹# 执⾏下⾯安装命令# 安装mysql5.7服务端sudo apt-get install mysql-server-5.7# 安装mysql5.7客户端sudo apt-get install mysql-client-5.7# 使⽤c/c++等语⾔操作mysql的动态链接库,如果不需要可不安装sudo apt install libmysqlclient-dev安装时需要输⼊两次mysql root⽤户的密码(此密码需要记住)安装完成后查看mysql版本和服务mysql -V # 查看mysql版本netstat -tap | grep mysql # 查看mysql服务如上图所⽰说明安装成功。

mysql无法远程连接10038错误的坑(阿里云ecs)

mysql无法远程连接10038错误的坑(阿里云ecs)

mysql⽆法远程连接10038错误的坑(阿⾥云ecs)为什么有这篇博客 昨天购买了阿⾥云的ecs服务器,通过xshell安装了docker,然后在docker环境中安装mysql,版本是8.0.21。

开始⼀切顺利,在服务器环境中能正常执⾏各种命令。

结果在使⽤navicat远程连接服务器mysql时卡住了,以下就是从卡住到解决的过程,希望能帮助到同样遇到这个问题的⼈。

问题根源 先说结论,由于是阿⾥云新实例,控制台未设置规则,远程⽆法访问3306这个端⼝,导致了客户端远程连接出现10038这个错误。

排查过程mysql登录先确定是否能正常在服务器上登录mysql -uroot -pEnter password:Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 9Server version: 8.0.21 MySQL Community Server - GPL很显然登录成功,能正常操作show databases;这样的命令mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || mysql || performance_schema || sys |+--------------------+4 rows in set (0.00 sec)创建数据库然后尝试创建数据库mysql> create database test;Query OK, 1 row affected (0.00 sec)mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || mysql || performance_schema || sys || test |+--------------------+5 rows in set (0.00 sec)mysql> use test;Database changedmysql> show tables;Empty set (0.00 sec)⾛到这⼀步也没有⽤任何问题root⽤户远程登录是否授权mysql> use mysql;Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedmysql> select User,authentication_string,Host from user;+------------------+------------------------------------------------------------------------+-----------+| User | authentication_string | Host |+------------------+------------------------------------------------------------------------+-----------+| root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | % || schema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | localhost | | mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | localhost | | mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | localhost || root | $A$005$byLhU'ict_qEg}A4pO6IUms8wmp1NNgUG2a.27n8HIPq..p5zMeDrtqF3 | localhost |+------------------+------------------------------------------------------------------------+-----------+5 rows in set (0.00 sec)通过图表看到有2个root账户,⼀个本地连接localhost ,⼀个%代表可以远程连接。

MySQL8.0设置远程访问权限的方法

MySQL8.0设置远程访问权限的方法

MySQL8.0设置远程访问权限的⽅法上⼀篇⽂章讲解了重置 MySQL 的密码,有同学反馈⽆法程连接到数据库,这是因为 MySQL 安装完成后只⽀持 localhost 访问,我们必须设置⼀下才可以远程访问,另外还有⼀些 MySQL 8.0 连接时的⼀些问题,本⽂也会⼀并进⾏讲解如何解决。

1.登录MySQLmysql -u root -p输⼊您的密码2.选择 mysql 数据库use mysql;因为 mysql 数据库中存储了⽤户信息的 user 表。

3.在 mysql 数据库的 user 表中查看当前 root ⽤户的相关信息select host, user, authentication_string, plugin from user;执⾏完上⾯的命令后会显⽰⼀个表格查看表格中 root ⽤户的 host,默认应该显⽰的 localhost,只⽀持本地访问,不允许远程访问。

4.授权 root ⽤户的所有权限并设置远程访问GRANT ALL ON *.* TO 'root'@'%';GRANT ALL ON 表⽰所有权限,% 表⽰通配所有 host,可以访问远程。

5.刷新权限所有操作后,应执⾏flush privileges;6.查看 root ⽤户的 host再次执⾏步骤 2,你会发现 root ⽤户的 host 已经变成 %,说明我们的修改已经成功,可以远程访问了。

7.访问数据库远程访问数据库的可视化⼯具⽐较多如:Navicat、SQLyog、MySQL workbench 等,我这⾥使⽤ Navicat输⼊访问的 host 和密码,报 2059 错误,这是因为 MySql8.0 版本和 5.0 的加密规则不⼀样,⽽现在的可视化⼯具只⽀持旧的加密⽅式。

此问题有两种⽅法,⼀种是更新 Navicat 驱动来解决此问题,另⼀种是将 MySQL ⽤户登录的加密规则修改为mysql_native_password,第⼀种⽅法我试过了没有起作⽤,我这⾥采⽤第⼆种⽅法。

MySql远程连接设置(图文教程)

MySql远程连接设置(图文教程)

MySql远程连接设置(图文教程)MySql远程连接设置介绍:经常我们在安装完mysql之后,没有设置mysql远程连接的功能,有时侯我们需要在远程管理mysql服务器,就必须的远程连接mysql,所以我们就要用到如何启起mysql远程连接设置。

有多种方法,本文重点推荐第4种方法设置和开启mysql 远程连接功能--实现MySql远程连接设置多机授权或指定多ip或所有主机远程访问mysql1、先查看mysql是否启动ps -le |grep mysqld 查测一下mysql是否启动netstat -an |grep 3306 检测一下mysql 3306端口是否为监听状态。

/usr/local/mysql/bin/mysqladmin version 查看mysql的版本2、用root用户登陆mysql/usr/local/mysql/bin/mysql -u root -p 登陆mysql[root@WebSrv extra]# /usr/local/mysql/bin/mysql -u root -pEnter password:Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 4Server version: 5.0.41-log Source distributionType 'help;' or '\h' for help. Type '\c' to clear the buffer.mysql>3、实现MySql远程连接设置单机授机,或指定某个ip,或某个主机远程访问mysql 格式:grant 权限on 数据库名.表名to 用户@登录主机identified by "用户密码";grant select,update,insert,delete on *.* to root@192.168.1.3 identified by "hncctv";原先数据表结构mysql> use mysql;Database changedMysql>grant select,update,insert,delete on *.* to root@192.168.1.3 identified by "hncctv";mysql> select host,user,password from user;+-----------+------+-------------------------------------------+| host | user | password |+-----------+------+-------------------------------------------+| localhost | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |+-----------+------+-------------------------------------------+执行上述语句后结果mysql> use mysql;Database changedmysql> select host,user,password from user;+--------------+------+-------------------------------------------+ | host | user | password | +--------------+------+-------------------------------------------+ | localhost | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | | 192.168.1.3 | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |+--------------+------+-------------------------------------------+ 2 rows in set (0.00 sec)可以看到在user表中已有刚才创建的root用户。

Mysql开启远程连接方法

Mysql开启远程连接方法

Mysql开启远程连接⽅法分类:数据库开发技术解决MySQL不允许从远程访问的⽅法开启 MySQL 的远程登陆帐号有两⼤步:1、确定服务器上的防⽕墙没有阻⽌ 3306 端⼝。

MySQL 默认的端⼝是 3306 ,需要确定防⽕墙没有阻⽌ 3306 端⼝,否则远程是⽆法通过 3306 端⼝连接到 MySQL 的。

如果您在安装 MySQL 时指定了其他端⼝,请在防⽕墙中开启您指定的 MySQL 使⽤的端⼝号。

如果不知道怎样设置您的服务器上的防⽕墙,请向您的服务器管理员咨询。

2、增加允许远程连接 MySQL ⽤户并授权。

1)⾸先以 root 帐户登陆 MySQL在 Windows 主机中点击开始菜单,运⾏,输⼊“cmd”,进⼊控制台,MySQL 的 bin ⽬录下,然后输⼊下⾯的命令。

在 Linux 主机中在命令提⽰⾏下输⼊下⾯的命令。

CODE:> MySQL -uroot -p123456123456 为 root ⽤户的密码。

2)创建远程登陆⽤户并授权CODE:> grant all PRIVILEGES on discuz.* to ted@'123.123.123.123' identified by '123456';上⾯的语句表⽰将 discuz 数据库的所有权限授权给 ted 这个⽤户,允许 ted ⽤户在 123.123.123.123 这个 IP 进⾏远程登陆,并设置 ted ⽤户的密码为 123456 。

下⾯逐⼀分析所有的参数:all PRIVILEGES 表⽰赋予所有的权限给指定⽤户,这⾥也可以替换为赋予某⼀具体的权限,例如:select,insert,update,delete,create,drop 等,具体权限间⽤“,”半⾓逗号分隔。

discuz.* 表⽰上⾯的权限是针对于哪个表的,discuz 指的是数据库,后⾯的 * 表⽰对于所有的表,由此可以推理出:对于全部数据库的全部表授权为“*.*”,对于某⼀数据库的全部表授权为“数据库名.*”,对于某⼀数据库的某⼀表授权为“数据库名.表名”。

MySQL配置远程访问(bind-address)的一大误区

MySQL配置远程访问(bind-address)的⼀⼤误区MySQL配置远程访问(bind-address)的⼀⼤误区看到⽹上很多⼈说了bind-address=192.168.1.100,并且关闭skip-networking。

可以实现在192.168.1.100主机上对mysql的远程访问。

我想说,我试了,This is bullshit!⼀、我本机操作,尝试了多次都是⽆法启动MySQL,报错如下:[root@localhost ~]# service mysql restartERROR! MySQL server PID file could not be found!Starting MySQL... ERROR! The server quit without updating PID file (/tmp/mysqld/mysqld.pid).[root@localhost ~]#如果说是得⽤设置的那个主机远程连接重启的话,那好我也尝试了,依旧报错如上。

⾸先bind-address的官⽅解释如下:--bind-address=ip_address#Use specified network interface to connect to MySQL Server(在具有多个⽹络接⼝的计算机上,使⽤此选项选择⽤于连接 MySQL 服务器的接⼝。

)#注解:假如⼀个服务器上配置了多个⽹卡,即存在配置多个ip的情况下,可以⽤bind-address选择监听某个接⼝(ip)。

只有通过被监听的接⼝,才能访问mysql。

总结⼀下,bind-address的设置有以下三种情况:bind-address=127.0.0.1 #只允许本机访问。

bind-address=某个⽹卡的ip #例如bind-address=192.168.1.101,只能通过ip为192.168.1.101的⽹卡访问。

bind-address=0.0.0.0 #此规则是系统默认配置,监听所有⽹卡,即允许所有ip访问。

Centos7下无法远程连接mysql数据库的原因是什么

Centos7下无法远程连接mysql数据库的原因是什么防火墙主要由服务访问规则、验证工具、包过滤和应用网关4个部分组成,防火墙就是一个位于计算机和它所连接的网络之间的软件或硬件。

下面这篇文章主要给大家介绍了关于在Centos7下无法远程连接mysql数据库的原因与解决方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。

原因分析有两种原因数据库没有授权服务器防火墙没有开放3306端口一、数据库没有授权对于mysql数据库没有授权,只需要用一条命令就可以了。

mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;//远程连接数据库的时候需要输入用户名和密码用户名:root密码:123456指点ip:%代表所有Ip,此处也可以输入Ip来指定Ip输入后使修改生效还需要下面的语句mysql>FLUSH PRIVILEGES;二、服务器防火墙没有开放3306端口centos 有两种防火墙 FirewallD和iptables防火墙centos7 使用的是FirewallD防火墙。

FirewallD 是iptables 的前端控制器,用于实现持久的网络流量规则。

它提供命令行和图形界面,在大多数Linux 发行版的仓库中都有。

与直接控制 iptables 相比,使用 FirewallD 有两个主要区别:1.FirewallD 使用区域和服务而不是链式规则。

2.它动态管理规则集,允许更新规则而不破坏现有会话和连接。

FirewallD 是iptables 的一个封装,可以让你更容易地管理iptables 规则 - 它并不是 iptables 的替代品。

虽然 iptables 命令仍可用于 FirewallD,但建议使用 FirewallD 时仅使用 FirewallD 命令。

linux中mysql开启远程访问功能教程_windows教程

linux中mysql开启远程访问功能教程
mysql安装成功之后,默认的是没有开启远程访问的权限,只有本地才可以进行访问。

接下来是小编为大家收集的linux中mysql开启远程访问功能教程,欢迎大家阅读:
linux中mysql开启远程访问功能教程
1、基本原理
mysql默认的相关配置实际上是在mysql数据库中mysql用户中的user表中,只需要修改此表中相关记录即可实现
具体查看方式可以参考下图所示:
2、添加新用户进行授权
#grant all privileges on *.* to 创建的用户名@”%” identified by “密码”;
#flush privileges; #刷新刚才的内容
#格式:grant 权限on 数据库名.表名to 用户@登录主机identified by “用户密码”;
#@后面是访问mysql的客户端IP地址(或是主机名) % 代表任意的客户端
#如果填写localhost 为本地访问(那此用户就不能远程访问该mysql数据库了)。

3、为现有的用户设置远程访问权限
#use mysql;
#update db set host = ‘%’ where user = ‘用户名’;
#如果写成 host=localhost 那此用户就不具有远程访问权限
#FLUSH PRIVILEGES;
4、查看修改后的结果
#use mysql;
#select host,user,password from user;
看了“linux中mysql开启远程访问功能教程”还想看:
本文已影响人。

Workbench通过远程访问mysql数据库的方法详解

Workbench通过远程访问mysql数据库的⽅法详解
前⾔
⼀台电脑上安装了Workbench,现需要访问另⼀台ubuntu服务器上的MySQL数据库,但mysql默认是不允许访问的,考虑到安全性问题,也不适合使⽤root⽤户来访问mysql。

这时我们就需要开放mysql服务器并创建新的⽤户来访问mysql。

1、开放mysql
mysql的配置⽂件在/etc/mysql/f⽂件内,⾥⾯有⼀⾏bind-address = 127.0.0.1表⽰只允许本地访问,将这⾏注释即可
2、创建新的mysql⽤户
(1)⾸先在本地进⼊mysql数据库的mysql库内
(2)创建⽤户:GRANT ALL ON *.* to user@'IP' IDENTIFIED BY 'password'; 其中user表⽰需要创建⽤户的名字;IP表⽰哪台客户端想要访问mysql数据库;password表⽰密码;并赋予所有的权限。

(3)FLUSH PRIVILEGES; 刷新mysql的系统权限相关表,否则会出现拒绝访问。

重启数据库也能达到这样的效果
3、重启数据库
使⽤指令sudo service mysql restart 来重启数据库
4、使⽤workbench连接数据库
其中主机名表⽰需要连接的数据库ip
连接成功的效果
点击进⼊的页⾯
注意:不能访问ubuntu服务器内Docker容器环境下的mysql
总结
以上就是这篇⽂章的全部内容了,希望本⽂的内容对⼤家的学习或者⼯作能带来⼀定的帮助,如果有疑问⼤家可以留⾔交流,谢谢⼤家对的⽀持。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档