mysql远程表访问设置
- 格式:docx
- 大小:16.48 KB
- 文档页数:4
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的详细教程⽬录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)为什么有这篇博客 昨天购买了阿⾥云的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设置远程访问权限的⽅法上⼀篇⽂章讲解了重置 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远程连接设置。
有多种方法,本文重点推荐第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 的远程登陆帐号有两⼤步: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)的⼀⼤误区看到⽹上很多⼈说了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数据库的原因是什么防火墙主要由服务访问规则、验证工具、包过滤和应用网关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开启远程访问功能教程
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,现需要访问另⼀台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
总结
以上就是这篇⽂章的全部内容了,希望本⽂的内容对⼤家的学习或者⼯作能带来⼀定的帮助,如果有疑问⼤家可以留⾔交流,谢谢⼤家对的⽀持。
使用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处理机的将来版本可能被消除。