发表于: 2018-04-06 05:55:54
1 645
今天完成的事情:
任务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
每个命令的参数和用法还需要继续熟悉。
评论