发表于: 2018-04-06 05:55:54

1 643


今天完成的事情:  

任务1.22

买一台服务器,阿里云或者是金山云都可以。部署数据库到远程DB,从本地直接连远程。

本来打算用虚拟机的,买不起云服务器。后来突然想起半年多前买过一台西部数码的云虚拟主机,尝试了半天账号密码终于登录上去了。然而那个Windows虚拟主机只有180兆的空间大小,一个MySQL数据库都放不下。最后又花了9.9块买了个百度云Linux服务器,只有一个月时间。

使用VNC控制台登录服务器后,就来到了linux的命令行终端。pwd命令查看当前所在目录,ls命令查看当前目录所有可见文件。加上-l参数的话,ls -l是以列的形式查看当前目录下所有文件的详细属性。

需要去官网下载Linux版本的MySQL数据库,压缩包600兆左右。

下载后要上传到服务器,又下载了个ftp上传工具。以前好像用过cuteFTP之类的,这次下载的是flashFXP。

在linux上创建一个ftp用户:useradd -d /home/ftpuser -s /sbin/nologin ftpuser

-d指定用户目录为/home/ftpuser,-s指定shell脚本为/sbin/nologin,表示不允许shell登录,最后的ftpuser为用户名。

至于为什么要禁止ftp用户shell登录,我也没查,怕ftp也登录不了了,就没加-s这段代码。

设置密码:passwd ftpuser

打开ftp工具,使用公网ip、ftp用户名和密码连接到了云服务器,然后上传mysql压缩包。

解压文件:tar -xvf mysql-xx.tar.gz

解压完把文件夹改名为mysql:mv mysql-xx.tar.gz mysql

创建mysql用户组和用户:groupadd -mysql和useradd -r -g mysql mysql

-r参数是指创建系统用户,系统用户是指处理特定系统功能的用户,是非登录用户。例如mysql用户就只处理和mysql程序相关的操作。

-g是指定新增用户所属的用户组,-g后面的mysql就是刚建的组,最后的mysql是用户名。

关于用户组和用户等,可以参考文章:https://www.linuxidc.com/Linux/2016-10/136251.htm

初始化数据库,执行命令:

./mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

记下临时密码,在root@localhost:后面。

将mysql的启动服务脚本复制到init.d目录下并改名为mysql:

cp  ./mysql/support-files/mysql.server  /etc/init.d/mysql

启动服务:service mysql start

使用临时密码登录并修改密码:

./mysql/bin/mysql -uroot -p

set password for 'root'@'localhost' = password('xxx');

开启mysql远程登录:

use mysql; //选择数据库

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

创建项目所需的数据库及表,插入数据:

修改项目中数据源配置中url的ip为云服务器公网ip,测试连接:


明天计划的事情: 

任务1.23,将maven项目部署到Linux云服务器上。

继续任务。         

遇到的问题:      

1.初始化MySQL时,出现警告:

TIMESTAMP with implicit DEFAULT value is deprecated

修改mysql配置文件vim /etc/my.cnf,加上下面内容,问题解决:

[mysqld]

explicit_defaults_for_timestamp=true

原因参考文章:http://www.jb51.net/article/71054.htm

2.初始化时还有另一个错误:

--initialize specified but the data directory has files in it. Aborting.

说是data文件夹里已经有文件了。然后目录里并没有文件夹。原来在my.cnf文件里data默认指向了另一个目录。于是修改配置文件如下:

把basedir和datadir都写在配置文件里,顺便把编码也加进去了,再重新到安装目录初始化:

./mysql/bin/mysqld --initialize --user=mysql

终于成功了。注意这里的basedir是指mysql安装路径,我的mysql安装在/usr/local/下了。

3.登录时又报错:Can't connect to local MySQL server through socket ‘xx.sock'

报错里的这个路径也不知是在哪配置的,解决方法参考文章:http://aiezu.com/article/mysql_cant_connect_through_socket.html

加上下面的两段设置就好了,编码是后来加的。

之前创建的表和数据库时没有改编码,已经是latin1编码了,要改过来:

alter database jnshu character set utf8;

alter table student convert to character set utf8;

4.使用eclipse运行Java程序访问云服务器数据库,报错:

'xxxx' is not allowed to connect to this MySQL Server

开始看见报错连接的ip和配置的不一样,还以为是获取ip的问题,查了下发现是权限问题。

首先确保没有开启防火墙,查看防火墙状态:service iptables status

开启防火墙:service iptables start

关闭防火墙:service iptables stop

检测到没有开启防火墙,真正原因是mysql没有打开远程访问权限,只能本地访问,修改如下:

选择mysql数据库,将user表中的root用户(程序中数据源使用的用户)的host字段属性由'localhost'改为'%'后,访问成功。(重启了Mysql服务)          

收获:

熟悉了在linux系统上安装MySQL的步骤,感觉比Windows系统麻烦了些。

熟悉了一些Linux的最常用命令,总结:

查看当前所在目录:pwd

查看当前目录内容:ls

复制、移动、删除文件:cp、mv、rm

新建用户:useradd或adduser

设置密码:passwd username

新建用户组:groupadd

查看mysql状态:service mysql status;

查看防火墙状态:service iptables status;

开启/关闭服务:service servername start/stop

压缩文件:tar -cvf filename  参数v是显示过程,f是指定文件名,f是必需的

解压文件:tar -xvf filename

编辑文件:vim filename 进行编辑:i 保存退出:esc>:wq

每个命令的参数和用法还需要继续熟悉。




返回列表 返回列表
评论

    分享到