MYSQL 数据库远程访问
项目中遇到A项目需要访问B项目的数据库,共同使用同一个用户表,此时需要用到数据库的远程访问。下面是小编跟大家分享的是MYSQL 数据库远程访问,欢迎大家来阅读学习~
MYSQL 数据库远程访问
方法/步骤
本地项目的数据库需要开启federated引擎才能访问远程数据库的表。
MYSQL命令行,查看FEDERATED引擎是否开启,默认是不开启。
>show engines;
如下图,我的已经开启引擎。
如果没有开启,配置my.cnf[mysqld]feterated
重新启动mysql服务器。
远程IPB的数据库也要开启远程连接。这样本地的数据库DB1才有权限访问远程数据库DB2.
创建远程登陆用户并授权:
执行以下命令:(下面有详细说明)
USE mysql;
SELECT host,user,PASSWORD from user;
GRANT ALL PRIVILEGES ON *.* TO "root"@"%" IDENTIFIED BY "yourpassward";
FLUSH PRIVILEGES;
USE mysql;
SELECT host,user,PASSWORD from user;
grant all PRIVILEGES on study.* to tom@'192.168.4.156' identified by 'sun3d';
上面的语句表示将 study 数据库的所有权限授权给 tom 这个用户,允许 tom 用户在 192.168.4.156这个 IP 进行远程登陆,并设置 tom 用户的密码为 sun3d。
下面逐一分析所有的参数:
all PRIVILEGES 表示赋予所有的权限给指定用户,这里也可以替换为赋予某一具体的权限,例如:select,insert,update,delete,create,drop 等,具体权限间用“,”半角逗号分隔。
study.* 表示上面的权限是针对于哪个表的,study 指的是数据库,后面的 * 表示对于所有的表,由此可以推理出:对于全部数据库的全部表授权为“*.*”,对于某一数据库的全部表授权为“数据库名.*”,
对于某一数据库的某一表授 权为“数据库名.表名”。
tom 表示你要给哪个用户授权,这个用户可以是存在的用户,也可以是不存在的用户。
这里为了易用性你最好用root用户,因为别人远程的时候也会用,密码也要用root用户的密码,因为别人也是这么用的。(保证大家都用同一个登录信息访问同一个数据库,这是非常重要的)
192.168.4.156表示允许远程连接的 IP 地址,如果想不限制链接的 IP 则设置为“%”即可。
sun3d 为用户的密码。
执行了上面的语句后,再执行下面的语句,方可立即生效。
> flush privileges;
在本地数据库DB1中创建远程数据库表
要求表结构要一模一样,所以可以先
在B2里面找到建立表table的语句
SHOW CREATE TABLE DB2.table。
在本地数据库执行sql语句:
CREATE TABLE `sys_user` (
`USER_ID` varchar(32) NOT NULL,
`USER_ACCOUNT` varchar(50) DEFAULT NULL,
`USER_ADDRESS` varchar(100) DEFAULT NULL,
`USER_BIRTHDAY` date DEFAULT NULL,
`USER_CITY` varchar(32) DEFAULT NULL,
`USER_COUNTY` varchar(32) DEFAULT NULL,
`USER_CREATE_TIME` datetime DEFAULT NULL,
`USER_CREATE_USER` varchar(32) DEFAULT NULL,
`USER_DEPT_ID` varchar(32) DEFAULT NULL,
`USER_DEPT_PATH` longtext,
`USER_EMAIL` varchar(50) DEFAULT NULL,
`USER_ID_CARD_NO` varchar(18) DEFAULT NULL,
`USER_IS_ASSIGN` int(11) DEFAULT NULL,
`USER_IS_MANGER` int(11) DEFAULT NULL,
`USER_ISDISPLAY` int(11) DEFAULT NULL,
`USER_MOBILE_PHONE` varchar(11) DEFAULT NULL,
`USER_NICK_NAME` varchar(100) DEFAULT NULL,
`USER_PASSWORD` varchar(100) DEFAULT NULL,
`USER_PROVINCE` varchar(32) DEFAULT NULL,
`USER_QQ` varchar(15) DEFAULT NULL,
`USER_SEX` int(11) DEFAULT NULL,
`USER_STATE` int(11) DEFAULT NULL,
`USER_TELEPHONE` varchar(15) DEFAULT NULL,
`USER_UPDATE_TIME` datetime DEFAULT NULL,
`USER_UPDATE_USER` varchar(32) DEFAULT NULL,
PRIMARY KEY (`USER_ID`),
UNIQUE KEY `USER_ID` (`USER_ID`)
) ENGINE=federated connection="mysql://tom:sun3d@180.169.9.123:3306/xuhui/sys_user" DEFAULT CHARSET=utf8;