深度学习科研实验

Mysql进行局域网内的数据库共享:如果发现有空格命名的数据库,

2021-06-11  本文已影响0人  IT小叮当

Mysql实现局域网数据库共享

当想要使用Mysql进行局域网内数据库共享时,千万一定要注意,进行实验的这几台电脑的ip地址需要在同一个网段 ,并且这几台电脑都需要安装的有MySQL服务。

image

话不多说,开始肝!

image

首先: 检查, 要发布数据库的A机和想要访问的B机是否在同一网段

你以为不用?在一个实验室网段就一样?劝你还是检查下吧:相信我,世界这么大,它每天都会给你惊喜的。

image

“纸上得来终觉浅,绝知此事要躬行”

首先让A机的小伙伴,win+r 进入运行界面,输入cmd

image

输入命令 ipconfig/all 查看ip地址,找到ipv4地址

image

用同样的方法查看B机的ip地址

image

一定要确认好ip在同一网段后,再进行下一步考虑。真的,不在同一网段真没必要整了,真的没意思,物理上都连不通,还想白嫖,这明摆着欺负老实人。

image

不给资金还想外网也连通,这样的问题,就是再娴熟的技术也给他解决不了。

image

为什么说这些?你去工业界实习搬几天砖就知道了,只能说“社会很单纯,复杂的是人”。

image

另外,你在实习过程中,遇到不合理的项目需求一定要讲出来,你今天给他搞个APP,他明天就想让你根据手机壳来变换APP的颜色。

image

遇事不决,眼角膜来凑????

image

言归正传,幸好我们今天遇到的需求还算正常,确实在同一网段,还可以搞下局域网的部署。

一、进行数据库共享配置

点击win10系统图标旁边的放大镜, 输入mysql进行查找

image

找到mysql命令行客户端,双击打开客户端

image

按照提示输入密码

image

输入完成后,按下回车,即可进入mysql界面

image

输入以下命令可以查看mysql安装位置,以备不时之需

show variables like "%char%";

变量character_sets_dir对应的就是mysql安装位置

image

查看数据库,找到要共享的数据库

show databases;
image

例如,我们需要共享的数据库为tcm data, 选择tcm data数据库

use tcm data;

真是惊喜莲莲,竟然报错了

image

出现了,它出现了,巨坑它出现了!!!千万记得,以后再遇见mysql数据库中有空格命名的要么跑路,要么把建库人的头打歪!不要问我是怎么知道的

image

经过检查发现,原因是,数据库名字带空格。好吧,然后开始改名字,把空格去掉,放心吧,不出意外的话,另一个坑应该就来了。

image 果然,经过一番研究,你会发现navicat是不能直接改数据库名字的 image image

还好这个数据库不大,我们直接新建数据库tcmdata 把tcm data的数据表直接复制过来。

新建数据库tcmdata

在任意一数据库处,右键---“new database”(新建数据库)

image

输入名字,字符集一般选择"utf8",排序一般选择“uft8_general_ci”,

image

选完后点击ok,即可在左侧看到新建好的数据库

image

对,就选这个没有空格的

开始复制表

将"tcm data"的表复制到tcmdata

image

选择最上方菜单栏,Tools工具栏---"Data transfer"数据传输

image

出现数据迁移对话框后,左侧表示数据源,右侧表示迁移目标

image

在数据源处,点击database右侧倒立小三角,选中tcm data 数据库

image

迁移目标(右边),选择好目标所在的localhost_3306

image

选择目标数据库,tcmdata

image

检查是否选中需要迁移的数据,一般默认全部选择了

image

点击start就可以开始迁移了

image

点击后,会出现确认对话框,点击ok即可

image

正在迁移中......

image

迁移完成后,文字最后一行会出现“Finished-Successfully” 对话框左上角会显示100%的字样,点击close关闭即可。

image

数据库处右键----点击refresh刷新

image

之后双击tcmdata查看,可以看到表格已经全部复制进来

image

肝到这儿,终于可以喝口水,压压惊

image

短暂的休息后,回到我们的主线任务:共享数据库

开始选择需要共享的数据库tcmdata

use tcmdata;
image

进行局域网访问共享

GRANT ALL PRIVILEGES ON *.* TO 'yourname'@'localhost'  IDENTIFIED BY 'yourpassword';

出现错误

image

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTIFIED BY '123456'' at line 1

开始填坑

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
image

然后再次,共享权限

grant select,delete,update,insert on tcmdata.* to 'root'@'183.170.55.28' identified by '123456';

仍然报错如下

image

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by 123456' at line 1

原因分析:这是因为在新版本的mysql(8.xx版本)中,创建账户和赋予权限是两套独立的命令体系。

解决办法:

创建用户

create user username@'183.170.55.47' identified by 'password';
image

赋予权限:

grant all on *.* to username@'%' with grant option;

运行结果如下

image

刷新权限

flush privileges;
image

进入默认数据库

use mysql;
image

查看更新后的user表

select user, host from user;
image

开放端口3306

在防火墙防端开放端口3306的访问权限

image

点击左侧的选项“高级设置”

image

点击“入站规则”-----“新建规则”,进行规则设置

image

选择“端口”---“下一步”

image

在特定端口处填写“3306”---“下一步”

image

默认的就是“允许连接”---“下一步”

image

默认的就是全部类型的网络,直接点击“下一步”

image

输入名称和描述

image

以管理员身份启动CMD

image

关闭,再重启mysql服务,在系统CMD命令行中输入

net stop mysql

出现服务名无效的错误

image

这是因为没有将mysql注册到win服务里面去,在mysql命令行里输入,查看mysql安装路径。

show variables like "%char%";
image

根据这个路径C:\Program Files\MySQL\MySQL Server 8.0 在电脑端打开

在CMD中输入以下命令进入mysql的bin文件夹

cd C:\Program Files\MySQL\MySQL Server 8.0\bin
image

然后输入

mysqld --install

运行结果

image

开启mysql服务

net start mysql
image

删除mysql下的data文件,右键---删除

image

重新执行 mysqld --initialize 就可以在当前路径下生成data文件夹,

mysqld --initialize-insecure

再次执行net start mysql ,发现并没有成功启动mysql

image

发现mysql没有启动,初步猜测是因为权限问题,于是,重新打开cmd

右键---以管理员身份运行

image

运行后,发现仍然无法启动

image image

于是进入路文件径C:\Program Files\MySQL\MySQL Server 8.0

image

在下面新建my.txt

# MySQL client library initialization.

保存后,将名字改为my.ini作为mysql配置文件

image

重启电脑

image

开机后,再次开启mysql

net start mysql

这次,服务启动成功

image

总结:重启电脑,可以解决90%的问题。

image

二、测试共享是否成功

在B机(局域网内的另一台电脑)上输入命令:

mysql -h 183.170.55.28 -uroot -p

出现输入密码提示框后,输入密码

image

发现出现链接错误

image

ERROR 1130 (HY000): Host 'DESKTOP-P1D5LQJ' is not allowed to connect to this MySQL server

这是因为ip地址动态更新,我们在A机(共享数据库的主机)

进入cmd查询使用现在的ip地址

ipconfig/all
image

发现A机的IP变成了183.170.55.47

于是我们在B机上使用以下命令连接A机(共享数据库的主机)

mysql -h 183.170.55.47 -uroot -p
image

发现又出现新的问题

image

ERROR 1045 (28000): Access denied for user 'root'@'183.170.55.28' (using password: YES)

原因分析:

我们没有给root用户授予权限,因为我们建的用户为“xwx”,

我们需要使用“xwx”用户连接数据库才行

mysql -h 183.170.55.47 -uxwx -p
image

发现登录成功

我们查看是否能看到共享的数据库

image

发现并没有我们共享的tcmdata数据库!!!

image

作为一名成年科研僧,生活在社会的底层,我们应该学会控制情绪了,你要告诉自己,自己一点都不难过,然后继续肝

image

原因分析:

我想这可能是因为共享的时候没有选择到tcmdata(想要共享的数据库),我们授予tcmdata数据库的所有表的操作权限给xwx用户

在A机(具有数据库的主机)上执行命令

grant all on tcmdata.* to 'xwx'@'%';
image

刷新权限

flush privileges;

在B机(通过局域网连接数据库的主机)上退出mysql后,重新登录

\q
image

重新登录

image

查看数据库,发现此时tcmdata已经可以查看到,这说明已经共享成功。

show databases;
image

查看数据库tcmdata

use tcmdata;
image image

这说明,终于共享成功了!

如果你看完了,那么恭喜你,你已经掌握了mysql数据库共享的方法以及会可能出现的坑。恭喜你,你还是那个少年,你已经获得了力量~

image
上一篇下一篇

猜你喜欢

热点阅读