前言
云服务器部署web项目时,遇到的相关问题记录一下;
小白若是不知道个人博客选择啥服务器的话,这里可以看下:
之前用linux的宝塔面板,基本上没出现啥问题,但有个域名是在花生壳买的,当时准备使用本地物理机作为服务器,先使用本机笔记本玩玩,后面看双十一十二也没便宜几百块,就还是在tx云买了个三年的2核4G8M轻量应用服务器,我买的时候是222三年,性能完全过剩(就挂了个dnf(毕竟是十几年的老玩家),游戏里卡的那是。。。。。动不了。。。。。不过也是挂了tomcat运行),刚建站,其实1核2G也够。轻量应用服务器就不需要自己倒腾,很多软件都可以预装,我换成windows,预装了mysql8.0,然后就出现了下面mysql的相关问题。
不过这里也遇到个坑,国内服务器使用域名访问(ip访问不用)需要备案,个人是无法建论坛等涉及到团体的网站的(花生壳买的域名不需要备案,但是会限制网速啥的---这也是我为啥从linux转为windows的原因,花生壳没有linux版),还有就是如果个人想建这类网站,建议选用国外或者香港服务器;建多个网站备案,需要第一个已备案网站能正常访问,且网站下方需要注明备案号链接等等不扯了,说的有点啰嗦了。。。
作为小白的我,苦恼于寻找各种文章中,我就将我遇到的这些问题记录在一篇文章中,帮助一下像我一样的小白,更快速的解决问题。
目录
②打开任务管理器,点开详细,找到是httpd.exe程序占用80端口:
You must reset your password using ALTER USER statement before executing this statement.【已解决】
4、MySQL的user表host设置错误,本地都无法登陆【已解决】
6、解决:create connection error, url: ****,errorCode 0, state 08001
一、服务器相关问题
1、服务器无法ping:
修改防火墙设置:
服务器管理器 ---> 工具 ---> 高级安全Windows Defender防火墙 ---> 入站规则 ---> 文件和打印机共享(回显请求 - ICMPv4 - In),启用规则。
2、将Tomcat8080端口改为80,使用域名直接访问
①将8080改为80;
找到tomcat/conf/service.xml文件,找到没有被注释的
<Connector port="8080" protocol="HTTP/1.1" URIEncoding="UTF-8"
connectionTimeout="20000"
redirectPort="8443" />
port="8080" 改为 port="80" 即可;
②使用端口直接访问项目,不需要输入项目名:
找到<Engine 下的<Host>,在<Host>里面加上加粗部分(项目:testProject在webapp下面):
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="testProject" reloadable="true"/>
<Valve .........
</Host>
③使用域名访问项目:
根据第②项,找到<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
改为:
<Host name="abc123.com" appBase="webapps"
unpackWARs="true" autoDeploy="true">
3、启动Tomcat,端口80被占用
①检测80端口被哪个程序占用:
cmd窗口执行:netstat -aon | findstr "80"
可看到80端口被pid为“2176”的程序占用:
②打开任务管理器,点开详细,找到是httpd.exe程序占用80端口:
作为小白的我不知道这个程序是哪个的,百度找了下,是Apache程序,突然想起服务器预装的Apache了,接下来,找到Apache目录(预装的是C盘根目录下httpd-2.4.43);
③修改占用80端口程序的端口,或者停止相应程序;
这里打开:Apache/conf/httpd.conf
找到80,修改为88或者其他:
保存后,重启Apache服务:
然后,关闭先前的Tomcat,重新启动,双击Tomcat/bin/startup.bat。
二、MySQL相关问题:
1、MySQL登录语句:【已解决】
mysql -h localhost -P 3306 -u root -proot;
2、MySql登录进去后,提示:
You must reset your password using ALTER USER statement before executing this statement.【已解决】
解决:使用命令:alter user user() identified by "新密码";
3、远程无法访问MySQL【已解决】
(mysql>:是指登录成功后在mysql里执行的语句)
1、连接数据库: mysql -u root -p
2、进入mysql数据库:mysql>use mysql;
3、修改user表中的Host:mysql>update user set Host='%' where User='root';
4、刷新:mysql>flush privileges;
4、MySQL的user表host设置错误,本地都无法登陆【已解决】
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
使用cmd命令:
①关闭mysql服务(需要管理员身份运行):
net stop mysql
②进入mysql的bin目录下,mysql8.0无法直接使用mysqld --skip-grant-tables来跳过密码登录,
mysql8.0可使用命令:
mysqld --console --skip-grant-tables --shared-memory
③不关闭上面cmd窗口,重新打开一个cmd(重要),执行:mysql -uroot mysql
④登陆成功,依次输入:
mysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>flush privileges;
接下来就可以重新登录了。
之前以为设置多个ip,可以直接用逗号,然后设置完,一退出,直接无法登陆了(自己作,哭笑不得),搞了好几个小时才弄好。
还是直接用“%”这个吧,先不折腾了。
退出,启动mysql服务,执行:
net start mysql
接下来,所有ip都能通过root用户和密码访问服务器的mysql了。
还是创建一个用户吧:
mysql> create user '用户名'@'%' identified by '密码';
mysql> grant all privileges on 数据库名.* to '用户名'@'%' identified by '密码';
5、解决:"Host '*.*.*.*' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'"
连接错误次数过多,防火墙认为是外部攻击,所以需要刷新一下host,使用root登录mysql,执行命令:
mysql>flush hosts;
6、解决:create connection error, url: ****,errorCode 0, state 08001
①mysql使用的是8.0版本,所以需要将maven项目的包版本升级,我之前是5.1.29,现改成8.0.12,idea里reload一下。
②驱动连接和url地址都是需要修改的,修改为下面的配置:
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://ip地址/数据库?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.12</version>
</dependency>
往后遇到这个相关的问题,仍然会继续记录。
项目使用域名访问正常,可以睡觉了(又是熬夜的一天)。。。。。。
7.解决:使用navicat导出远程数据库sql文件出现中文乱码【已解决】
找到mysql安装目录,找到my.ini文件,增加编码设置,保存后重启MySQL服务
[client]
loose-default-character-set = utf8
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8
数据库->右键->数据库属性->字符集:utf8 -- UTF-8 Unicode,排序规则:utf8_general_ci
设置完成后,需要关闭连接重连。
Tip:使用navicat运行sql文件,或者使用命令行导入sql文件,都需要设置编码UTF-8。