Proftpd-1.2.7+MySQL整合经验_MySQL
经验之谈,大家可以参考。
首先在安装的时候。。确定mysql中mysql.hlibmysql和client.a
这两个文件的路经以我的为例:
/usr/local/mysql/include/mysql/mysql.h
/usr/local/mysql/lib/mysql/libmysqlclient.a
解压proftpd。然后找到contrib目录下的mod_sql_mysql.cp这个文件
打开==找到
改成/usr/local/mysql/include/mysql/mysql.h并保存
之后就是编译了
./configure --prefix=/usr/local/proftpd --with-modules=mod_sql:mod_sql_mysql --with-includes=/usr/local/mysql/include --with-libraries=/usr/local/mysql/lib
然后就是make 和make install安装完成。
/usr/local/proftpd/sbin/proftpd
如果没有任何提示就说明安装成功
PS:一般都会叫你改把"nogroup"改成"nobody"
然后到源代码中sample-configureations目录下找到mod_mysql.conf把它CP到proftpd/ect下成改名为proftpd.conf
修成参考“小凡”的文章
=================================
SQLConnectInfo dbname@host:port username password
为你的数据库的相应连接参数。
例子:我的proftpd的数据库账号:ftp密码:123456 端口:3306
SQLConnectInfo proftpd@localhost:3306 ftp 123456
将
SQLUserInfo users username password uid gid NULL NULL
改为
SQLUserInfo users userid passwd uid gid homedir shell
这是使用FTP帐号的表名和字段名。
在
SQLDefaultHomedir "/tmp"
的行首加上“#”注释符。
将
# SQLGroupInfo groups groupname gid members
前面的“#”注释符去掉,这是组信息。
如果不需要匿名登录,将
到
之间的内容前都加上“#”注释符。
四、建立数据库
在第三步中的dbname库中用以下命令建立相应的数据表,并建立一个帐号:
说明:这些都可以在phpMyAdmin下完成。这个也是最方便的MySQL的管理工具之一
DROP TABLE IF EXISTS `groups`;
CREATE TABLE `groups` (
`groupname` varchar(255) binary NOT NULL default '',
`gid` int(11) NOT NULL default '0',
`members` text NOT NULL,
PRIMARY KEY (`groupname`)
) TYPE=MyISAM;
INSERT INTO `groups` VALUES ('ftpgroup', 10000, 'ftpuser');
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
`userid` varchar(255) binary NOT NULL default '',
`passwd` varchar(255) binary NOT NULL default '',
`uid` int(11) default NULL,
`gid` int(11) default NULL,
`homedir` varchar(255) default NULL,
`shell` varchar(255) default NULL,
`count` int(11) default NULL,
PRIMARY KEY (`userid`)
) TYPE=MyISAM;
INSERT INTO `users` VALUES ('ftpuser', password('ftpuser'), 10000, 10000, '/home/ftpuser', '/bin/bash', 0);
五、启动proftpd
[root@test /root]# /usr/local/proftpd/sbin/proftpd
=============================
如果启动没有什么提示就说明成功了。
FAQ1:为什么我用localhost连不上
到网络===主机===把IP改成192.168.0.10试试看。
FAQ2:为什么连接上了。。要等很久或者Socks 什么连接失败
在FTP软件中去掉“被动模式PASV“

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Explication détaillée de la méthode de conversion du type int en octet en PHP En PHP, nous avons souvent besoin de convertir le type entier (int) en type octet (Byte), par exemple lorsqu'il s'agit de transmission de données réseau, de traitement de fichiers ou d'algorithmes de cryptage . Cet article présentera en détail comment convertir le type int en type byte et fournira des exemples de code spécifiques. 1. La relation entre le type int et l'octet Dans le domaine informatique, le type de données de base int représente un entier, tandis que l'octet (Byte) est une unité de stockage informatique, généralement des données binaires de 8 bits.

En C++, les variables de type int ne peuvent contenir que des valeurs entières positives ou négatives ; elles ne peuvent pas contenir de valeurs décimales. Des valeurs float et double sont disponibles à cet effet. Le type de données double a été créé pour stocker des décimales jusqu'à sept chiffres après la virgule. La conversion d'un entier en type de données double peut être effectuée automatiquement par le compilateur (appelée conversion "implicite"), ou elle peut être explicitement demandée par le programmeur au compilateur (appelée conversion "explicite"). Dans les sections suivantes, nous aborderons différentes méthodes de conversion. Conversions implicites Le compilateur effectue automatiquement des conversions de type implicites. Pour y parvenir, deux variables sont nécessaires : l’une de type virgule flottante et l’autre de type entier. Lorsque nous attribuons simplement une valeur ou une variable à virgule flottante à une variable entière, le compilateur s'occupe de toutes les autres choses.

Avec le développement d’Internet, l’analyse des mégadonnées et le traitement de l’information en temps réel sont devenus un besoin important pour les entreprises. Afin de répondre à de tels besoins, les bases de données relationnelles traditionnelles ne répondent plus aux besoins du développement commercial et technologique. Au lieu de cela, l’utilisation de bases de données NoSQL est devenue une option importante. Dans cet article, nous aborderons l'utilisation de SpringBoot intégré aux bases de données NoSQL pour permettre le développement et le déploiement d'applications modernes. Qu'est-ce qu'une base de données NoSQL ? NoSQL n'est pas seulement du SQL

Dans l’ère actuelle de développement rapide d’Internet, PHP, en tant que langage de script côté serveur, est adopté par de plus en plus de développeurs. PHP présente les avantages d'être facile à apprendre, flexible, open source et gratuit, et peut développer rapidement divers sites Web et applications Web. Cependant, en tant que développeur PHP, si vous souhaitez vous démarquer dans une concurrence féroce et écrire du code efficace et stable, vous devez également maîtriser les compétences d'implémentation et l'expérience de diverses fonctions. Tout d’abord, une planification raisonnable de l’architecture du projet est la clé du développement d’applications PHP. Une bonne structure de projet peut fournir une meilleure maintenabilité du code

La plage de valeurs de int32 va de -2 à la puissance 31 à 2 à la puissance 31 moins 1, soit -2147483648 à 2147483647. int32 est un type entier signé, ce qui signifie qu'il peut représenter des nombres positifs, des nombres négatifs et zéro. Il utilise 1 bit pour représenter le bit de signe et les 31 bits restants sont utilisés pour représenter la valeur numérique. Puisqu’un bit est utilisé pour représenter le bit de signe, le nombre effectif de bits int32 est 31.

UniApp réalise l'intégration parfaite du framework Vue.js Introduction : UniApp est un outil de développement multiplateforme basé sur le framework Vue.js. Il peut compiler un projet Vue.js en applications pour plusieurs plateformes différentes, telles que iOS, Android, petits programmes, etc. L'avantage d'UniApp est qu'il permet aux développeurs d'écrire un seul ensemble de code et de s'adapter à plusieurs plates-formes en même temps, accélérant ainsi l'efficacité du développement et réduisant les coûts de développement. Ce qui suit présentera comment utiliser UniApp pour obtenir une intégration parfaite du framework Vue.js.

En Java, int est un type de données signé 32 bits et ses variables nécessitent une mémoire 32 bits ; la plage valide du type de données int est comprise entre -2147483648 et 2147483647, et tous les entiers de cette plage sont appelés littéraux entiers. Un littéral entier peut être affecté à une variable int, telle que "int num1 = 21;".

Le nombre d'octets occupés par le type int peut varier selon les langages de programmation et les différentes plates-formes matérielles. Introduction détaillée : 1. En langage C, le type int occupe généralement 2 octets ou 4 octets. Dans les systèmes 32 bits, le type int occupe 4 octets, tandis que dans les systèmes 16 bits, le type int occupe 2 octets. Dans un système 64 bits, le type int peut occuper 8 octets ; 2. En Java, le type int occupe généralement 4 octets, tandis qu'en Python, le type int n'a pas de limite d'octets et peut être automatiquement ajusté, etc.
