因为在网上发现系统性、严谨(特别是在安全方面)的Linux部署方面的参考文章很少,于是整理以下六篇Linux环境部署的系列性文章,其为本人在实践中,完整的搭建一个基于Linux系统上Centos+Nginx+Tomcat+Mysql+FTP的操作文档,梳理记录如下,特别是在实践中碰到的各种问题和容易出错的地方,都做了重要标注和提醒(踩过的那些坑,我都特别标注出来);希望对于那些想要系统地完整搭建Linux环境的程序员们一个系统性的参考。但因大部分都是边搭建边记录下的操作,必定有所疏漏,还望见谅; 如有问题和意见请帮忙在后面的评论中指出,万分感谢!另整个搭建的过程中参考了网上许多优秀博主的优秀实践,在文中末尾或者其他适当的地方都有所标注,如有必要,你可以按参考的链接阅读参考的原文章。本文档一共分为6篇,这6个部分分别是:
1、(一)Linux环境部署(Centos+Nginx+Tomcat+Mysql) - FTP安装
2、(二)Linux环境部署(Centos+Nginx+Tomcat+Mysql) - 防火墙配置
3、(三)Linux环境部署(Centos+Nginx+Tomcat+Mysql) - Nginx环境搭建
4、(四)Linux环境部署(Centos+Nginx+Tomcat+Mysql) - 安装Tomcat和JDK 以及 Nginx与Tomcat整合
5、(五)Linux环境部署(Centos+Nginx+Tomcat+Mysql) - Mysql 安装
6、(六)Linux环境部署(Centos+Nginx+Tomcat+Mysql) - 一些常用命令总结
这篇系列性文章将会在以后的实践中持续地做修正和更新。
(在整理和记录这些文档的时候,对于我这个曾经从来不写博客的程序员来说,我发现的确收获良多,首先最重要的是对我的知识结构进行了一次重要的梳理和总结;另外,让我的思维和逻辑更加缜密;第三,强化和加深记忆;四,共享和分享的精神。
最后,希望对你有用。)
(五) Mysql安装
1、安装 查看有没有安装过:
yum list installed mysql*
rpm -qa | grep mysql*
查看有没有安装包:
yum list mysql*
安装mysql客户端:
yum install mysql
安装mysql服务器端:
yum install mysql-server
yum install mysql-devel
2、启动&&停止数据库字符集设置
mysql配置文件/etc/my.cnf中加入default-character-set=utf8
启动mysql服务: service mysqld start或者/etc/init.d/mysqld start
开机启动:
添加开机启动:chkconfig --add mysqld;
开机启动:chkconfig mysqld on;
查看开机启动设置是否成功chkconfig--list | grep mysql*
mysqld 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
停止服务命令:
service mysqld stop
3、登录 创建root管理员:
mysqladmin -u root password 123456
登录: mysql -u root-p输入密码即可。
(可能提示“ERROR 1045 (28000): Access denied for user '-root'@'localhost' (using password: YES)”)就用到下面的功能。
忘记密码:
service mysqld stop;
mysqld_safe --user=root --skip-grant-tables;
这一步骤执行的时候不会出现新的命令行,你需要重新打开一个窗口执行下面的命令
mysql -u root ;
use mysql;
update user setpassword=password("new_pass") where user="root";
flushprivileges;
4、远程访问 开放防火墙的端口号mysql
增加权限:mysql库中的user表新增一条记录host为“%”,user为“root”。
或者:update user set host = '%' where user = 'root' and host="localhost";
5、Linux MySQL的几个重要目录
数据库目录/var/lib/mysql/
配置文件 /usr/share /mysql(mysql.server命令及配置文件)
相关命令 /usr/bin(mysqladmin、mysqldump等命令)
启动脚本 /etc/rc.d/init.d/(启动脚本文件mysql的目录)
6、删除 mysql数据库
如果使用的是 yum安装的 mysql,需要删除的话,就使用如下命令:
yum -y remove mysql*
然后将 /var/lib/mysql文件夹下的所有文件都删除干净
最后再重新执行上面的安装步骤。
7.授权用户从远程登录
1. 改表法。
可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改"mysql"数据库里的 "user"表里的"host"项,从"localhost"改称"%"
mysql -u root -p;
mysql>use mysql;
mysql>update user set host = '%' where user = 'root' and host="localhost";
mysql>select host, user from user where user = 'root';
2. 授权法。
例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%'IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码
GRANT ALL PRIVILEGES ON *.* TO'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
修改Mysql默认数据库数据默认存放位置
参考:http://www.jb51.net/article/33578.htm
由于MySQL的数据库太大,默认安装的/var盘已经再也无法容纳新增加的数据,没有办法,只能想办法转移数据的目录。 我这里在/data, 把外部数据盘挂载在/data下。
下面我整理一下把MySQL从/var/lib/mysql目录下面转移到/data/mysql目录的具体操作:
在数据库里看一下数据库里当前数据文件的存放路径:
mysql> show variables like '%dir%';
1、首先我们需要关闭MySQL,命令如下:
service mysqld stop
2、然后是转移数据,为了安全期间,我们采用复制命令cp,先找到mysql的原目录
cd /var/lib
ls
运行这个命令之后就会看到mysql的目录了,然后执行cp命令
cp -a mysql /data/ #这样就把数据库复制到/dat下面去了
注意:(-a这个参数一定要带着,否则复制过去的权限就不对了。)
如果数据库比较大的话,时间会比较长,可能会超时,具体怎么设置ssh不超时的办法,请大家自己找相关资料。
3、然后我们修改配置文件,一共有三个,下面我一一说明:
修改第一个文件:修改之前先备份cp /etc/my.cnf /etc/my.cnfbak
vi /etc/my.cnf
打开之后修改datadir的目录为/data/mysql
把socket改成/data/mysql/mysql.sock #为了安全起见,你可以把原来的注释掉,然后重新加入一行,改成现在的目录。
修改第二个文件:修改之前先备份 cp /etc/init.d/mysqld /etc/init.d/mysqldbak
vi /etc/init.d/mysqld
注意:准确的位置是/etc/rc.d/init.d/mysqld,由于这里这里有一个/etc/init.d到/etc/rc.d/init.d的映射,
所以用上面的命令即可,也简单。
把其中datadir=/var/lib/mysql一行中,等号右边的路径改成你现在的实际存放路径:/data/mysql
修改第三个文件:修改之前先备份 cp /usr/bin/mysqld_safe/usr/bin/mysqld_safebak
vi /usr/bin/mysqld_safe
这里也是修改datadir的目录为/data/mysql
4、下面需要建立一个mysql.sock的链接:
ln -s /data/mysql/mysql.sock /var/lib/mysql/mysql.sock
至此所有的修改都完成了,下面启动mysql
service mysqld start
或者重启linux
reboot
如果能正常启动,说明修改成功。
#防火墙允许mysql端口3360远程访问
#vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -jACCEPT
Mysql配置文件my.cnf
安装了mysql没有my.cnf文件的情况
1、可以把mysql的示例配置文件,如my-medium.cnf拷贝到/etc/my.cnf,再去修改/etc/my.cnf的配置/usr/share/doc/MySQL-server-5.5.38/my-medium.cnf(ExampleMySQL config file for medium systems with little memory (32M - 64M) )
可以通过命令:>find / -name 你要找的文件(my.cnf/ my-medium.cnf) 或者 >whereis my.cnf 找到.
所有mysql的配置文件例子都放在:
# ll/usr/share/doc/MySQL-server-5.5.38/
2、参考目录下面的文章修改my.cnf文件(Example MySQL config file for very large systems)
修改MySQL的时区:
查看:mysql> show variables like '%time_zone%';
1 、可以通过修改my.cnf
在 [mysqld] 之下加
default-time-zone=timezone
来修改时区。如:
default-time-zone = '+8:00'
修改完重启msyql ># service mysql restart
注意一定要在 [mysqld]之下加,否则会出现 unknown variable 'default-time-zone=+8:00'
2、通过命令行在线修改(经测试不行)
看到有人通过命令行修改,试过之后发现只能改掉 timezone(而且只针对当前客户端影响),但是查处的时间还是原来的CST时间,重启mysql也没有,全部恢复了。所以这种方式行不通,还是需要修改my.cnf配置文件才行.以下为测试:
1. set time_zone = timezone
2. 比如北京时间(GMT+0800)
3. set time_zone = '+8:00'; 如下:
4. mysql> set time_zone='+8:00';
5.
6. mysql> show variables like '%time_zone%';
7. +------------------+--------+
8. | Variable_name | Value |
9. +------------------+--------+
10.| system_time_zone | CST |
11.| time_zone | +08:00 |
12.+------------------+--------+
mysql> flush privileges; # 立即生效
此时mysql时区已更改正确,与系统时区都使用为北京时间。
## 能改掉 timezone(而且只针对当前客户端影响),但是查处的时间还是原来的CST时间,重启mysql也没有,全部恢复了。所以这种方式行不通,还是需要修改my.cnf配置文件才行.
验证:
mysql> show variables like '%time_zone%';
mysql > select CURTIME();
或
mysql > select now();
参考文章:
linux下mysql的编译安装和my.cnf配置文件详解:
http://blog.itpub.net/26690043/viewspace-719495/
linux下导入、导出mysql数据库命令
一、导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径):
1、导出数据和表结构:
mysqldump -u用户名 -p密码数据库名 > 数据库名.sql
#/usr/local/mysql/bin/ mysqldump -uroot -p abc > abc.sql
敲回车后会提示输入密码
2、只导出表结构
mysqldump -u用户名 -p密码 -d 数据库名 > 数据库名.sql
#/usr/local/mysql/bin/ mysqldump -uroot -p -d abc > abc.sql
注:/usr/local/mysql/bin/ ---> mysql的data目录
二、导入数据库
1、首先建空数据库
mysql>create database abc;
2、导入数据库
方法一:
(1)选择数据库
mysql>use abc;
(2)设置数据库编码
mysql>set names utf8;
(3)导入数据(注意sql文件的路径)
mysql>source /home/abc/abc.sql;
方法二:
mysql -u用户名 -p密码数据库名 < 数据库名.sql
#mysql -uabc_f -p abc < abc.sql
建议使用第二种方法导入。
注意:有命令行模式,有sql命令
参考:
http://blog.csdn.net/tengdazhang770960436/article/details/18361979
相关视频课程推荐《站长必修课:网站是怎样做出来的?》https://edu.51cto.com/sd/3be5b