首页 > 数据库 >远端MySQL的总结

远端MySQL的总结

时间:2023-10-14 20:55:07浏览次数:26  
标签:总结 服务 my MySQL ini mysql 远端 root

目录


远端MySQL的总结

目前场景

此前,工程的前后端以及数据库三者是同时运行和相互连接于本地机(127.0.0.1)的。现欲把前后端布在远端服务器A(阿里云或腾讯云),将数据库(暂使用MySQL)放置在远端B(39.xx.xx.141)。

使用需求

意欲实现其他开发人员电脑可各自在DATABASE段写入远端B内MySQL参数后分别接入其内数据库。

操作思路

各步骤的实现参考主流博客教程,这里给出途中可能遇到的问题及个人经验分享,以下各错误不按上述流程先后顺序出现


异常汇总


本地 navicat 与 远端MySQL

此环节着重“如何将远程授权给本地(以允许各个本地能连至远端)”以及“navicat 内 新建连接的参数如何确认和写入”

修改远程授权登陆设置
登录数据库命令
mysql -uroot -p    ## 以root登录数据库 

输入root的登录密码,成功后会进入mysql,

查看mysql服务当前的默认端口

use mysql;    ## 选择mysql数据库
select user,host from user;    ## 查看用户访问端口
image-20231012150714698

说明:root用户默认的是localhost,说明只允许从本地登录mysql服务。而我们要从远程以root用户连接数据库,就必须修改host的值,改为‘%’:允许任何ip访问。

修改host允许任何ip访问

继续在命令面板

update user set host = '%' where user = 'root';

会回执执行成功的提示,再次使用之前的

select user,host from user;    ## 查看用户访问端口
image-20231012151116045

root用户的host已经修改为’%'

注意:修改完成后 还需要刷新一下服务配置,不然修改不会生效,并且第4步会执行失败。

mysql> FLUSH PRIVILEGES;    ## 刷新服务配置项

显示Query OK,表示刷新完成。现在就可以配置我们想要远程登录的用户权限了

授权root用户进行远程登录

输入命令:

mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root_pwd'; 
## 授权root远程登录 后面的root_pwd引起来的是登陆密码

Query OK

说明:此命令可以授权任何在mysql数据库user表中的用户以远程登录的方式访问数据库,本例中以’root’作为举例,若想授权其他用户,只需修改’root’的值为指定用户即可(比如admin),'root_pwd’为’root’用户对应的登录密码,可以修改为你想要授权用户的(admin的)登录密码。

启动本地Navicat连接

新建MySQL连接写入对应用户名、IP、端口等测试并真正连接即可



1045 - Access denied for user是因为MySQL8的特性,关闭了root用户的登陆,官网新版本里有介绍

忘记数据库密码
找到.ini
“win”+"r" #输入cmd 打开命令行
mysql -u root -p #输入密码打开MySQL客户端
show variables like #"%char%  查看安装路径
image-20231012152146979
修改.ini

[mysqld]这个条目下加入 skip-grant-tables 保存退出

重启mysql
停止: net stop mysql
应显示服务正在停止、成功停止

启动: net start mysql  
应显示正在启动、成功启动
进入MySQL客户端

这时候在cmd里面输入mysql -u root -p就可以不用密码登录了,出现 password:的时候直接回车可以进入

重设密码
#进入数据库
use mysql
#重新设置密码
update mysql.user set authentication_string=password('root') where user='root'
#刷新数据库
flush mysql
#退出
quit

再去navicat尝试连接



无my.ini文件

在之前问题中存在对此初始配置文件内容修改的操作,但该文件不一定能随安装一并出现在目录下(或一定不出现);

笔者尝试将安装目录的顶层目录(c盘的根目录) 中 programdata 文件夹下的my.ini 文件直接拷贝过来但似乎无效,采用以下措施:

删除MySql服务

打开cmd(记得”使用管理员身份“打开),如果没有配置环境变量,cd 到mysql程序下的bin文件夹下(详细步骤参见第一章~):

运行命令:

C:\mysql\mysql-8.0.23-winx64>sc delete MySql

"MySql"为服务名称,你的MysSql服务不一定是这个名称,可以打开电脑的服务窗口查看(不同操作系统的“服务”开启方法不同)

删除完成之后,最好去电脑的服务窗口看下,如果找不到MySql服务,说明已经已经删除成功。

如果还能看到MySql服务,可以手动右击选择”停止“,服务停止之后就会自动消失了。

新建my.ini配置文件

在mysql程序的根目录下,新建一个my.ini空白文件,用记事本打开,将以下内容复制进去,保存:

[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录!!!!!!!!!自行修改此路径
basedir=D:\mysql-8.0.20-winx64
# 设置mysql数据库的数据的存放目录!!!!!!!!!!!自行修改此路径
datadir=D:\mysql-8.0.20-winx64\data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server = utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
default_authentication_plugin=mysql_native_password
sql_mode = 'NO_ENGINE_SUBSTITUTIO'
secure_file_priv=""

其中basedir 和 datadir 根据实际MySql安装的位置进行修改

重新生成data文件

删除之前生成的data文件,如果有重要的数据表,请先备份好。

回到cmd,重新生成data文件。运行:

C:\mysql\mysql-8.0.23-winx64>mysqld --initialize-insecure --user=mysql

该命令需要执行大概一分钟或者更快,完成后会在MySql程序文件夹下重新生成名称为data的文件夹

重新安装mysql服务

安装MySql服务,同时设置绑定my.ini配置文件。命令:

C:\mysql\mysql-8.0.23-winx64>mysqld --install "MySql" --defaults-file="C:/mysql/mysql-8.0.23-winx64/my.ini"

如果提示安装成功,这时打开电脑的”服务“窗口,可以找到新添加的MySql服务

启动服务
net start mysql
重新设置密码
C:\mysql\mysql-8.0.23-winx64\bin>mysql -u root -p

这时密码为空,不需要填写,直接回车

修改root用户密码

在8.0之后的版本,修改root用户密码的命令是:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';


不知道 current root password

首先明确出现这样的情况,肯定是你的服务器上之前安装过mysql,所以mysql在重装就会要求输入原来设定的密码。

安全卸载方法
  • 在控制面板那里先卸载mysql。

  • 关闭已经启用的MySQL服务:ctrl+ r键入services.msc 。看看系统启windows动的服务中有没有MySQL一项。如果处于启动中则关闭

  • 删除mysql安装目录下的文件(C盘与D盘都有文件)

删除注册表【非必要谨慎操作】:打开注册表(win+r 键入regedit)

HKEY_LOCAL_MACHAINE\SEYSETIM\(current)controlset001(002)\service\mysql所有键值。

几个地方:

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Application\MySQL 目录删除
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Eventlog\Application\MySQL 目录删除
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\MySQL 目录删除

注册表中的ControlSet001,ControlSet002,不一定是001和002,可能是ControlSet005、006之类,删除的时候,都删除就可以

检查C:\WINDOWS目录下是否有my.ini文件,将其删除!

经过以上几点的操作,mysql就可以重新安装了。

关于更改端口

1、停止mysql服务,net stop MySQL(服务名称);

2、卸载Mysql服务:mysqld --remove 未安装则不用此步骤;

3、在MySQL的安装目录下用记事本打开my.ini 修改[mysqld]字段下的port=3306(默认端口号)为自己想修改的端口号。例如port=6666;保存退出。

另外,安装目录C:\Program Files\MySQL\MySQL Server 5.7\下如果没有my.ini只能看到my-default.ini,此处只修改my-default.ini中的端口号是不管用的,还需找到 C:\ProgramData\MySQL\MySQL Server 5.7\my.ini有DATA数据包的文件地方,修改此my.ini中的端口才行。

4、安装MySQL服务,输入命令:mysqld --install MySQL --defaults-file="C:\Program Files\MySQL\MySQL Server\my-default.ini" (MySQL为”服务“中数据库服务名称)

5、输入

net start MySQL57

启动数据库服务

6、测试查看端口是否成功, 重新登录数据库命令为:mysql -h localhost -P6666 -uroot -p 后回车输入登录密码

在登录后得对话框中输入show global variables like ‘port’; 在port一栏显示更改成功。

7、在远端自身的navicat或其他管理工具测试连接性

标签:总结,服务,my,MySQL,ini,mysql,远端,root
From: https://www.cnblogs.com/yansz001216/p/17764715.html

相关文章

  • 2023-2024-1 20231416 《计算机基础与程序设计》第三周学习总结
    计算机科学概论第二章学习了二进制、八进制、十进制、十六进制的计算和转化,二进制与八进制采用“三合一”转化,即三位二进制数按权展开为一位八进制数,二进制与十六进制数采用“四合一”转化法,即四位二进制数按权展开得到一位十六进制数。例如:二进制→八进制010=0+12^1+0=2二进制......
  • 学期2023-2024-1 20231401 《计算机基础与程序设计》第三周学习总结
    学期2023-2024-120231401《计算机基础与程序设计》第三周学习总结作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第三周作业这个作业的目标自学教材:计算机科学概论第2章,第3章,C语言程序设计第......
  • 2023-2024-1 20231416 《计算机基础与程序设计》第三周学习总结
    计算机概论第二章中书里主要讲述了二进制八进制以及十六进制的运算以及十进制如何转化为不同的进制学习二进制计算是学习计算机程序的重中之重在经过不懈学习后掌握了二进制的我对于学习计算机更有了一份自信第三章中学习了补码反码等概念以及关键字编码行程长度编码......
  • Mysql SELECT 语句执行过程
    整个SELECT语句查询流程1、客户端/服务端通信协议(Connectors)Mysql客户端/服务端通讯协议是半双工的,这就意味着在任意时刻只能有一端能发送数据,要么是客户端向服务端发送数据,要么是服务端向客户端发送数据,这两个动作不能同时进行,一旦一端开始发送数据,另外一端要完整......
  • 10.13每日总结
    今日代码:200行今日时间:3小时学习内容:今天我学习了大数据的数据的清晰,将数据导入到have数据库中,实现了信息的精细化操作。实现数据可视化。但是我不会,只能在网上查阅资料解决这一问题,目前做到了数据的清晰。......
  • MySQL解决查询语句1111 - Invalid use of group function错误
    是因为mysql查询语句的字段当中有聚合函数,where条件中不能用聚合函数的计算值作为查询条件,否则会出现:>1111-Invaliduseofgroupfunction错误。可以使用having解决。补充:这里主要要清楚where和having的作用以及区别:“WHERE” 是一个约束声明,在查询数据库的结果返回之前对......
  • C++基本算法大致总结
    排序算法:快速排序(QuickSort):使用std::sort或自定义实现。归并排序(MergeSort):自定义实现或使用std::stable_sort。堆排序(HeapSort):自定义实现或使用std::make_heap和std::sort_heap。搜索算法:二分查找(BinarySearch):使用std::binary_search或自定义实现。线性......
  • Mysql 体系结构
    网上找的一张 Mysql逻辑架构图整个Mysql逻辑架构大致可以分为网络连接层、数据库服务层、存储引擎层、文件系统层一、网络连接层客户端连接器(MysqlConnectors)是Mysql官方为各种开发语言和平台提供的访问Mysql数据库的驱动程序,它实现了对应语言访问数据库的标准接......
  • CSP2023 赛前集训总结
    2023.09.18T1刘谋题面描述现在,反抗军首领大司马交给你一个任务:给出原来两个星球之间的以太隧道连通情况以及骚猪帝国打击的星球顺序,以尽量快的速度求出每一次打击之后反抗军占据的星球的连通块的个数。(如果两个星球可以通过现存的以太通道直接或间接地连通,则这两个星球在同一......
  • 子序列有关问题总结
    我们定义子序列为:从原序列中选取若干个元素,按原序列的顺序排列的序列。1.最长上升子序列问题给定一个长为\(n\)的序列\(a\),求其中的最长的上升子序列的大小。1.1动态规划做法设\(dp_i\)为以\(a_i\)结尾的最长的上升子序列的大小,则序列\(a\)上最长的上升子序列的大小为\(\mat......