vsftp mysql安装配置

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
运维安全中心(堡垒机),企业双擎版 50资产 7天
云数据库 RDS MySQL,高可用系列 2核4GB
简介:
一、获取安装包
下载地址  http://vsftpd.beasts.org/
二、安装VSFTPD
useradd nobody
useradd vsftpdguest
useradd -d /var/ftp ftp
[root@localhost root]# chown root.root /var/ftp
[root@localhost root]# chmod og-w /var/ftp 
make 
make install
cp vsftpd /usr/local/sbin/vsftpd
cp vsftpd.conf.5 /usr/local/man/man5
cp vsftpd.8 /usr/local/man/man8
cp vsftpd.conf /etc
cp RedHat/vsftpd.pam /etc/pam.d/vsftpd
/usr/local/sbin/vsftpd &
三、安装pam-mysql
下载地址  http://prdownloads.sourceforge.net/pam-mysql/
1)安装
tar zxvf pam_mysql-0.7RC1.tar.gz 
cd pam_mysql-0.7RC1
./configure --with-mysql=/usr/ --with-openssl --with-cyrus-sasl2
make && make install
2)配置vsftpd支持mysql虚拟用户认证
[root@localhost vsftpd-2.2.2]#vi /etc/pam.d/vsftpd 
auth required /usr/lib/security/pam_mysql.so config_file=/usr/lib/security/pam_mysql.conf
account required /usr/lib/security/pam_mysql.so config_file=/usr/lib/security/pam_mysql.conf
[root@localhost vsftpd-2.2.2]# mkdir -p /etc/vsftpd/vsftpd_user_conf/
[root@localhost ftp]# vi /usr/lib/security/pam_mysql.conf
users.host=localhost
users.database=vsftp
users.db_user=vsftpdguest
users.db_passwd=vsftp0123user
users.table=users
users.user_column=name
users.password_column=passwd
users.password_crypt=3此处为0时密码为明文,2为password加密,3为md5加密
verbose=1
log.enabled=1
log.table=logs
log.pid_column=pid
log.message_column=msg
log.user_column=user
log.host_column=host
log.rhost_column=rhost
log.time_column=logtime
上面这里后面不能留有空格
3)设置虚拟用户权限及其家目录
[root@localhost vsftpd-2.2.2]# vi /etc/vsftpd/vsftpd_user_conf/4399 
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/DataCenter/4399/ #设定用户目录所在
4)下面是用户的配置文件存放目录
*******文件权限为root.root不然会出现用户找不到入口错误
[root@localhost ~]# ll /etc/vsftpd/vsftpd_user_conf/ 
total 12
-rw-r--r--  1 root root 153 Nov 19 14:52 4399
5)下面是FTP文件存放的目录
*****文件权限为vsftpdguest.vsftpdguest否则出现用户配置文件错误
[root@localhost ~]# ll /DataCenter/
total 12
drwxrw-r-x  5 vsftpdguest vsftpdguest 4096 Nov 17 17:25 4399
drwxrw-r-x  4 vsftpdguest vsftpdguest 4096 Nov 17 17:38 5i
drwxrw-r-x  4 vsftpdguest vsftpdguest 4096 Nov 17 17:39 hw
6)用户列表文件
[root@localhost ~]# vi /etc/vsftpd/vsftpd.chroot_list 此文件好像没有用,因为后来我建立了一个帐户没有在这里添加也行
4399
hw
5i
四、vsftpd.conf配置文件设置
[root@localhost ~]# vi /etc/vsftpd.conf
anonymous_enable=YES
local_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
dirmessage_enable=YES
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log
use_localtime=YES
listen=YES
pam_service_name=/etc/pam.d/vsftpd
user_config_dir=/etc/vsftpd/vsftpd_user_conf
guest_enable=YES
guest_username=vsftpdguest
anon_umask=077
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
五、FTP的防火墙设置
 ftp连接时需要两个端口:默认情况下是20和21,21端口为命令传输通道,20为数据传输通道.   
          如果是以主动模式的话,那么情况就是上述那样.   
          而如果是被动模式的话,那么命令通道还是默认21,而数据通道此时就是由客户端发出请求,即客户端向服务器端申请一个大于1023的端口进行传输数据,而不再是20了.   
如上所述为了打开防火墙,本来是想使用主动模式但看起来比较复杂,所以就使用了被动模式给了一个端口范围给FTP
iptables -I RH-Firewall-1-INPUT -p tcp -m multiport --dport 21,9981,9982,9983,9984,9985,9986,9987,9988,9989,9990  -j ACCEPT
service iptables save
同时在vsftpd.conf里加入
listen_port=21
pasv_min_port=9981
pasv_max_port=9986
六、数据库配置
create database vsftp;
use vsftp;
create table users(
id int AUTO_INCREMENT NOT NULL primary key,
name char(16) binary NOT NULL,
passwd char(40) binary NOT NULL);
***md5加密后有32位
create table logs(
pid int,
msg varchar(255),
user char(16),
host char(32),
rhost char(32),
logtime timestamp);
grant all on vsftp.* to  vsftpdguest@localhost identified by 'vsftp0123user';
insert into vsftp.users values ('1','4399',md5('xxx'));
问题:
500 OOPS: config file not owned by correct user, or not a file
配置文件权限问题
/etc/vsftpd/vsftpd_user_conf/4399权限要为 root root
用户找不到入口的问题虚拟用户没有配置文件存在,即下面文件不存在
/etc/vsftpd/vsftpd_user_conf/4399
出错观察最初诊断是在/var/log/vsftpd.log 这个最好是看看传文件记录不利于排错
/var/log/messages 会出现配置虚拟用户时的一些问题
/var/log/secure  pam认证这里会记录,虚拟用户访问数据库的一些问题诸如授权如果没有授权方面的问题了只能在客户端里看那个登录提示出错的一些信息了,vsftp的日志提示并不友好感觉
附:配置文件的说明
anonymous_enable=NO            #禁止匿名
local_enable=YES                       #允许本地登录
write_enable=YES                       #允许写,如需上传,则必须
local_umask=027                        #将上传文件的权限设置为:777-local_umask
anon_upload_enable=YES          #允许虚拟用户和匿名用户上传
anon_other_write_enable=YES  #允许虚拟用户和匿名用户修改文件名和删除文件
dirmessage_enable=YES
xferlog_enable=YES                      #打开日志记录
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log     #日志存放位置
xferlog_std_format=YES              #标准日志格式
idle_session_timeout=600        #空闲连接超时
data_connection_timeout=120
ftpd_banner=Welcome to ChinaRise FTP service       #欢迎信息
guest_enable=yes                       #允许虚拟用户
guest_username=vsftpdguest  #虚拟用户使用的系统账号
virtual_use_local_privs=YES     #虚拟用户拥有本地系统权限
chroot_local_user=NO
chroot_list_enable=YES
#以下两行将虚拟用户限制在其目录下,不能访问其他目录,或者直接用
chroot_local_user=YES
listen=yes                #监听/被动模式
listen_port=21        #监听端口
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list       #虚拟用户名单保存在文件/etc/vsftpd/vsftpd.chroot_list 中
user_config_dir=/etc/vsftpd/vsftpd_user_conf   #每个虚拟用户名的更加详细的培植保存在/etc/vsftpd/vsftpd_user_conf 中
 
 
 
 
FTP上传脚本
#!/bin/bash
str=`date +%Y-%m-%d`
mysqldump -u root -pxx g log_everyday -t >/q/setup/date/log_everyday.csv

cd /q/setup/date
ftp -n < /q/setup/ftpsh/ftp.cmd 
ftp.cmd 
open IP
user username password
binary
prompt off
cd dir
mput *
bye

scp脚本
scp.sh
#!/bin/bash
str=`date +%Y-%m-%d`
mysqldump -u root -pxx g log_everyday -t >/q/setup/date/log_everyday.csv
for i in `find /q/setup/date/ -name '*.csv' -ctime -1`
do
/q/setup/date/scp.expect $i
done

scp.expect
#!/usr/bin/expect
set timeout 6000 #(秒)
set csv [lindex $argv 0]
spawn  scp $csv  user@ip:/DataCenter/h/xx
expect {
    "(yes/no)?" {
        send "yes\n"
        expect "password:"
        send "password\r"
    }
 "password:" {
        send "password\r"
    }
 }
expect "]*"
exit
interact
 
 
最近改进的用FTP作为数据中心备份数据的脚本贴下来,下面是把上面的那两个脚本合为一个对于管理跟处理来说方便多了
#!/bin/bash
str=`date +%Y-%m-%d`
user=xxx
dir=xxx
pwd=xxx
path="/db/setup/data"
mysql -ppasswd -e 'select * from Log.log_everyday;' > $path/log_everyday.txt
cd $path
mv log_everyday.txt log_everyday.csv
ftp -n <<EOF
open fpip 21
user $user $pwd
binary
prompt off
cd $dir
mput *
bye
EOF
 
下面是在执行备份时再执行FTP到备份后删除一星期之前的数据
cd /db/db
str=xxx_`date +%y%m%d%H%M`.gz
echo "开始备份..."`date`
mysqldump -uroot -pxxx --quick --add-drop-table --extended-insert mysql|| gzip > $str
echo "备份完毕..."`date`
sleep 2
ftp -n <<EOF
open ftpip
user user pwd
binary
prompt off
cd dir
mput $str
bye
EOF
find /db/db -ctime +7 -exec rm -rf {} \;
脚本中有不足之处是对于数据中心的文件夹创建问题需要手动创建,当时是想弄个跑上去连接先创建个目录先还存在不少问题,继续改进,呵呵


本文转自 qwjhq 51CTO博客,原文链接:http://blog.51cto.com/bingdian/233723
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
2月前
|
关系型数据库 应用服务中间件 nginx
Docker一键安装中间件(RocketMq、Nginx、MySql、Minio、Jenkins、Redis)
本系列脚本提供RocketMQ、Nginx、MySQL、MinIO、Jenkins和Redis的Docker一键安装与配置方案,适用于快速部署微服务基础环境。
|
30天前
|
Ubuntu 关系型数据库 MySQL
Ubuntu 22.04.1上安装MySQL 8.0及设置root密码的注意事项
这些是在Ubuntu 22.04.1 系统上安装MySQL 8.0 及设置root密码过程中必须考虑的关键点。正确的遵循这些步骤可确保MySQL的安装过程既顺利又安全。
427 20
|
2月前
|
关系型数据库 MySQL Linux
安装MySQL 5.7到红帽系RHEL8+系列上
本文介绍了在RHEL 8及以上系统中安装MySQL 5.7的两种方法:解压安装与RPM包安装。涵盖环境准备、目录配置、数据盘挂载、初始化及服务启动等关键步骤,适用于红帽系(8+)部署MySQL 5.7。
|
24天前
|
存储 关系型数据库 MySQL
在CentOS 8.x上安装Percona Xtrabackup工具备份MySQL数据步骤。
以上就是在CentOS8.x上通过Perconaxtabbackup工具对Mysql进行高效率、高可靠性、无锁定影响地实现在线快速全量及增加式数据库资料保存与恢复流程。通过以上流程可以有效地将Mysql相关资料按需求完成定期或不定期地保存与灾难恢复需求。
114 10
|
4月前
|
Java 关系型数据库 MySQL
在Linux平台上进行JDK、Tomcat、MySQL的安装并部署后端项目
现在,你可以通过访问http://Your_IP:Tomcat_Port/Your_Project访问你的项目了。如果一切顺利,你将看到那绚烂的胜利之光照耀在你的项目之上!
288 41
|
4月前
|
SQL 关系型数据库 MySQL
MySQL下载安装全攻略!小白也能轻松上手,从此数据库不再难搞!
这是一份详细的MySQL安装与配置教程,适合初学者快速上手。内容涵盖从下载到安装的每一步操作,包括选择版本、设置路径、配置端口及密码等。同时提供基础操作指南,如数据库管理、数据表增删改查、用户权限设置等。还介绍了备份恢复、图形化工具使用和性能优化技巧,帮助用户全面掌握MySQL的使用方法。附带常见问题解决方法,保姆级教学让你无忧入门!
MySQL下载安装全攻略!小白也能轻松上手,从此数据库不再难搞!
|
4月前
|
开发框架 Java 关系型数据库
在Linux系统中安装JDK、Tomcat、MySQL以及部署J2EE后端接口
校验时,浏览器输入:http://[your_server_IP]:8080/myapp。如果你看到你的应用的欢迎页面,恭喜你,一切都已就绪。
380 17
|
4月前
|
关系型数据库 MySQL Java
安装和配置JDK、Tomcat、MySQL环境,以及如何在Linux下更改后端端口。
遵循这些步骤,你可以顺利完成JDK、Tomcat、MySQL环境的安装和配置,并在Linux下更改后端端口。祝你顺利!
315 11
|
5月前
|
Ubuntu 关系型数据库 MySQL
在Ubuntu 22.04上配置和安装MySQL
以上就是在Ubuntu 22.04上配置和安装MySQL的步骤。这个过程可能看起来有点复杂,但只要按照步骤一步步来,你会发现其实并不难。记住,任何时候都不要急于求成,耐心是解决问题的关键。
611 30
|
4月前
|
Ubuntu 关系型数据库 MySQL
mysql8.0安装初始化不需要设定root密码?
uubntu 的mysql安装完成后无法设定root密码
299 10

推荐镜像

更多