设为首页 收藏本站
查看: 670|回复: 0

[经验分享] proftp + mysql 配置管理

[复制链接]
YunVN网友  发表于 2018-9-30 06:52:36 |阅读模式
  一、下载安装proftp mysql
  下载  wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.4d.tar.gz
  tar zxf proftpd-1.3.4d.tar.gz
  INSTALLATION  Mod_Clamav
  To install Mod_Clamav, download and unpack the Mod_Clamav source code.
  wget http://www.thrallingpenguin.com/resources/mod_clamav-0.10.tar.gz
  tar xzvf mod_clamav-0.10.tar.gz
  Download the latest proftpd source code, and prepare it for building Mod_Clamav.
  wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.1.tar.gz
  tar xzvf proftpd-1.3.1.tar.gz
  cp mod_clamav-0.10/mod_clamav.* proftpd-1.3.1/contrib
  Apply the required patch:
  cd proftpd-1.3.1
  patch -p1 < ../mod_clamav-0.10/proftpd.patch
  Now the usual steps for building ProFTPd, using third-party modules, apply. Additionally, you may change any configure arguments to meet your needs.
  cd proftpd-1.3.4d
  --prefix=/usr/local/proftpd-1.3.4d --enable-ctrls --with-mysql-config=/usr/local/mysql/bin/mysql_config --with-libraries=/usr/local/mysql/lib
  --with-includes=/usr/local/mysql/include --enable-shadow --enable-autoshadow --enable-openssl --enable-pool-size --enable-dso
  --with-modules=mod_ratio:mod_readme:mod_wrap2:mod_wrap2_sql:mod_ifsession:mod_sql:mod_sql_mysql:mod_sql_passwd:mod_quotatab:mod_quotatab_sql:mod_quotatab_file:mod_clamav
  --with-include=/usr/local/lab/unixODBC-2.3.2/includes:/usr/local/mysql/include --with-libraries=/usr/local/lab/unixODBC-2.3.2/lib:/usr/local/mysql/lib
  make && make install
  说明:
  --with-modules=mod_sql:mod_sql_mysql:mod_quotatab:mod_quotatab_sql   这句是让编译ProFTPD 支持MySQL的模块,并有磁盘限额支持;
  --with-includes=    这是来指定MySQL服务器includes所在的位置;在这里我设置的是/usr/include/mysql,因为我的MySQL服务器的includes的确在这个目录;你可以根据自己的机器环境来调整;
  --with-libraries=    这是来指定MySQL服务器libraries所在的位置;在这里我设置的是/usr/lib/mysql,因为我的MySQL服务器的libraries的确在这个目录;你可以根据自己的机器环境来调整;
  到此proftp已安装结束
  主要配置文件如下:
  [root@server:/usr/local/proftpd/etc]# cat proftpd.conf
  # This is a basic ProFTPD configuration file (rename it to
  # 'proftpd.conf' for actual use.  It establishes a single server
  # and a single anonymous login.  It assumes that you have a user/group
  # "nobody" and "ftp" for normal operation and anon.
  ServerName                      "ProFTPD Default Installation"
  ServerType                      standalone
  DefaultServer                   on
  # Port 21 is the standard FTP port.
  Port                            21
  # Don't use IPv6 support by default.
  UseIPv6                         off
  # Umask 022 is a good standard umask to prevent new dirs and files
  # from being group and world writable.
  Umask                           022
  TimeoutLogin         120
  TimeoutIdle          600
  TimeoutNoTransfer    900
  TimeoutStalled      3600
  # Where do we put the pid files?
  #ScoreboardPath    /var/run/proftpd
  # To prevent DoS attacks, set the maximum number of child processes
  # to 30.  If you need to allow more than 30 concurrent connections
  # at once, simply increase this value.  Note that this ONLY works
  # in standalone mode, in inetd mode you should use an inetd server
  # that allows you to limit maximum number of processes per service
  # (such as xinetd).
  MaxInstances                    30
  MaxLoginAttempts        3
  # Set the user and group under which the server will run.
  User                            apache
  Group                           users
  # To cause every FTP user to be "jailed" (chrooted) into their home
  # directory, uncomment this line.
  #DefaultRoot ~
  # Normally, we want files to be overwriteable.
  AllowOverwrite          on
  # 上传断点续传
  AllowRetrieveRestart    on
  AllowStoreRestart       on
  # Bar use of SITE CHMOD by default
  
  DenyAll
  
  # A basic anonymous configuration, no upload directories.  If you do not
  # want anonymous users, simply delete this entire  section.
  #
  #  User                         ftp
  #  Group                                ftp
  # We want clients to be able to login with "anonymous" as well as "ftp"
  #  UserAlias                    anonymous ftp
  # Limit the maximum number of anonymous logins
  #  MaxClients                   10
  # We want 'welcome.msg' displayed at login, and '.message' displayed
  # in each newly chdired directory.
  #  DisplayLogin                 welcome.msg
  #  DisplayChdir                 .message
  # Limit WRITE everywhere in the anonymous chroot
  #  
  #    DenyAll
  #  
  #
  #设置MySQL认证:
  #数据库联接的信息,DatabaseName是数据库名, HostName是主机名,
  #Port是端口号,UserName是连接数据库的用户名,Password是密码。
  SQLConnectInfo proftpd@192.168.1.1 proftpd 123456  #用户名与密码
  #数据库认证的类型:
  SQLAuthTypes OpenSSL
  #指定用来做用户认证的表的有关信息。("FTPUSERS"和"FTPGRPS"是数据表名字,等一会而在下面建立)
  SQLUserInfo FTPUSERS userid passwd uid gid home shell
  SQLGroupInfo FTPGRPS grpname gid members
  #设置如果shell为空时允许用户登录:
  RequireValidShell off
  #数据库的鉴别
  SQLAuthenticate users groups usersetfast groupsetfast
  #如果home目录不存在,则系统会为根据它的home项新建一个目录:
  CreateHome off
  #判断这个用户是否允许登录本机
  #SQLUserWhereClause "accesshost like'%10.10.26.195%'" #这里的%号ProFtp不识别, 妈的!所以用下面的方法.
  SQLUserWhereClause "0 !=FIND_IN_SET('192.168.1.1',accesshost)"
  #SQL验证日志
  #SQLLog
  SQLLogFile /usr/local/proftpd/var/sql.log
  #SQL验证用户的UID和GID
  SQLMinUserUID 500
  SQLMinUserGID 100
  SQLDefaultUID 500
  SQLDefaultGID 100
  #####  #####
  MaxClients      50
  UseReverseDNS   off
  IdentLookups  off
  #QuotaLimitTable file:/usr/local/proftpd/etc/ftpquota.limittab
  #QuotaTallyTable file:/usr/local/proftpd/etc/ftpquota.tallytab
  QuotaDirectoryTally  on
  QuotaDisplayUnits Mb
  QuotaEngine on
  QuotaLog /usr/local/proftpd/var/quota.log
  QuotaShowQuotas on
  QuotaOptions ScanOnLogin
  SQLNamedQuery get-quota-limit SELECT "name, quota_type, per_session, limit_type, bytes_in_avail, bytes_out_avail, bytes_xfer_avail, files_in_avail, files_out_avail, files_xfer_avail FROM quotalimits WHERE name = '%{0}' AND quota_type = '%{1}'"
  SQLNamedQuery get-quota-tally SELECT "name, quota_type, bytes_in_used, bytes_out_used, bytes_xfer_used, files_in_used, files_out_used, files_xfer_used FROM quotatallies WHERE name = '%{0}' AND quota_type = '%{1}'"
  SQLNamedQuery update-quota-tally UPDATE "bytes_in_used = bytes_in_used + %{0}, bytes_out_used = bytes_out_used + %{1}, bytes_xfer_used = bytes_xfer_used + %{2},files_in_used = files_in_used + %{3}, files_out_used = files_out_used + %{4}, files_xfer_used = files_xfer_used + %{5} WHERE name = '%{6}' AND quota_type = '%{7}'" quotatallies
  SQLNamedQuery insert-quota-tally INSERT "%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}" quotatallies
  QuotaLimitTable sql:/get-quota-limit
  QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally
  DefaultRoot ~
  DisplayLogin welcome to ftp server !
  AllowStoreRestart on
  ############ Fixed Log Format #########
  LogFormat awstats "%t   %h      %u      %m      %f      %s      %b"
  ExtendedLog /usr/local/proftpd/var/transfer.log read,write awstats
  TransferLog /usr/local/proftpd/var/transfer.log
  ServerLog /usr/local/proftpd/var/server.log

  #Single system with both ProFTPd and Clamd utilizing TCP sockets. Additionally, only files who's>  
  ClamAV on
  ClamServer localhost
  ClamPort 3310
  ClamMaxSize 250 Mb
  
  数据库设置:
  注:数据库与proftpd 程序可以位于不同的服务器上面.可实现需要部署proftpd 程序的服务器都统一使用数据库用户认证,便于ftp账号的统一管理.一个ftp 账号也可以指定在多台proftpd 部署的程序主要上面登录.
  例如:
  mysql> select * from FTPUSERS;
  +--------+--------------------------+-----+-----+-----------------------------+---------------+--------------------------+-------------------+
  | userid         | passwd                | uid | gid | home                          | shell         | accesshost               | coment            |
  +--------+--------------------------+-----+-----+--------------------------------------------+---------------+--------------------------+-----------
  | user01    | bog7BizRhTQS0p9qVroQ==yyyyyyy | 500 | 100 | /data/mysql              | /sbin/nologin | 192.168.1.1,192.168.1.2  |                   |
  | user02    | 6+CETb6sIYZfbVNt3sSIS4444rrrr | 500 | 100 | /opt                     | /sbin/nologin | 192.168.1.1              |                   |
  用户user01 在主机(192.168.1.1,192.168.1.2)部署好程序设置后,都可以使用FTP进行登录.
  创建用户:
  mysql>create database proftpd;

  mysql>Grant select,insert,update,delete,create,drop,index,alter,create temporary tables,lock tables on proftpd.*  to proftpd@localhost>  mysql>flush privileges;
  导入以下数据库表结构:
  -- Current Database: `proftpd`
  --
  CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ftp_db` /*!40100 DEFAULT CHARACTER SET latin1 */;
  USE `proftpd`;
  --
  -- Table structure for table `FTPGRPS`
  --
  DROP TABLE IF EXISTS `FTPGRPS`;
  /*!40101 SET @saved_cs_client     = @@character_set_client */;
  /*!40101 SET character_set_client = utf8 */;
  CREATE TABLE `FTPGRPS` (
  `grpname` text NOT NULL,
  `gid` smallint(6) NOT NULL,
  `members` text NOT NULL
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  /*!40101 SET character_set_client = @saved_cs_client */;
  --
  -- Table structure for table `FTPUSERS`
  --
  DROP TABLE IF EXISTS `FTPUSERS`;
  /*!40101 SET @saved_cs_client     = @@character_set_client */;
  /*!40101 SET character_set_client = utf8 */;
  CREATE TABLE `FTPUSERS` (
  `userid` text NOT NULL,
  `passwd` text NOT NULL,
  `uid` int(11) NOT NULL,
  `gid` int(11) NOT NULL,
  `home` text,
  `shell` text,
  `accesshost` text,
  `coment` text
  ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
  /*!40101 SET character_set_client = @saved_cs_client */;
  --
  -- Table structure for table `quotalimits`
  --
  DROP TABLE IF EXISTS `quotalimits`;
  /*!40101 SET @saved_cs_client     = @@character_set_client */;
  /*!40101 SET character_set_client = utf8 */;
  CREATE TABLE `quotalimits` (
  `name` varchar(30) DEFAULT NULL,
  `quota_type` enum('user','group','class','all') NOT NULL DEFAULT 'user',
  `per_session` enum('false','true') NOT NULL DEFAULT 'false',
  `limit_type` enum('soft','hard') NOT NULL DEFAULT 'soft',
  `bytes_in_avail` float NOT NULL DEFAULT '0',
  `bytes_out_avail` float NOT NULL DEFAULT '0',
  `bytes_xfer_avail` float NOT NULL DEFAULT '0',
  `files_in_avail` int(10) unsigned NOT NULL DEFAULT '0',
  `files_out_avail` int(10) unsigned NOT NULL DEFAULT '0',
  `files_xfer_avail` int(10) unsigned NOT NULL DEFAULT '0'
  ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
  /*!40101 SET character_set_client = @saved_cs_client */;
  --
  -- Table structure for table `quotatallies`
  --
  DROP TABLE IF EXISTS `quotatallies`;
  /*!40101 SET @saved_cs_client     = @@character_set_client */;
  /*!40101 SET character_set_client = utf8 */;
  CREATE TABLE `quotatallies` (
  `name` varchar(30) NOT NULL DEFAULT '',
  `quota_type` enum('user','group','class','all') NOT NULL DEFAULT 'user',
  `bytes_in_used` float NOT NULL DEFAULT '0',
  `bytes_out_used` float NOT NULL DEFAULT '0',
  `bytes_xfer_used` float NOT NULL DEFAULT '0',
  `files_in_used` int(10) unsigned NOT NULL DEFAULT '0',
  `files_out_used` int(10) unsigned NOT NULL DEFAULT '0',
  `files_xfer_used` int(10) unsigned NOT NULL DEFAULT '0'
  ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
  /*!40101 SET character_set_client = @saved_cs_client */;
  /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
  proftpd 程序启动文件配置:
  ln -s /usr/local/proftpd/proftpd.sh /etc/init.d/proftpd
  chkconfig --add proftpd
  /etc/init.d/proftpd stop
  启动文件内容:
  [root@server:/usr/local/proftpd]# cat proftpd.sh
  #!/bin/sh
  #
  # Startup script for ProFTPD
  # chkconfig: 345 85 15
  # description: ProFTPD is an enhanced FTP server with \
  #              a focus toward simplicity, security, and ease of configuration. \
  #              It features a very Apache-like configuration syntax, \
  #              and a highly customizable server infrastructure, \
  #              including support for multiple 'virtual' FTP servers, \
  #              anonymous FTP, and permission-based directory visibility.
  # processname: proftpd
  # config: /usr/local/proftpd/etc/proftpd.conf
  #
  # By: Osman Elliyasa
  # $Id: proftpd.init.d,v 1.7 2002/12/07 21:50:27 jwm Exp $
  # Source function library.
  . /etc/rc.d/init.d/functions
  if [ -f /etc/sysconfig/proftpd ]; then
  . /etc/sysconfig/proftpd
  fi
  PATH="$PATH:/usr/local/proftpd/sbin"
  # See how we were called.
  case "$1" in
  start)
  echo -n "Starting proftpd: "
  daemon proftpd $OPTIONS
  echo
  touch /var/lock/subsys/proftpd
  ;;
  stop)
  echo -n "Shutting down proftpd: "
  killproc proftpd
  echo
  rm -f /var/lock/subsys/proftpd
  ;;
  status)
  status proftpd
  ;;
  restart)
  $0 stop
  $0 start
  ;;
  reread)
  echo -n "Re-reading proftpd config: "
  killproc proftpd -HUP
  echo
  ;;
  suspend)
  hash ftpshut >/dev/null 2>&1
  if [ $? = 0 ]; then
  if [ $# -gt 1 ]; then
  shift
  echo -n "Suspending with '$*' "
  ftpshut $*
  else
  echo -n "Suspending NOW "
  ftpshut now "Maintanance in progress"
  fi
  else
  echo -n "No way to suspend "
  fi
  echo
  ;;
  resume)
  if [ -f /etc/shutmsg ]; then
  echo -n "Allowing sessions again "
  rm -f /etc/shutmsg
  else
  echo -n "Was not suspended "
  fi
  echo
  ;;
  *)
  echo -n "Usage: $0 {start|stop|restart|status|reread|resume"
  hash ftpshut
  if [ $? = 1 ]; then
  echo '}'
  else
  echo '|suspend}'
  echo 'suspend accepts additional arguments which are passed to ftpshut(8)'
  fi
  exit 1
  esac
  if [ $# -gt 1 ]; then
  shift
  $0 $*
  fi
  exit 0
  添加用户相关脚本:
  [root@server:/usr/local/proftpd]# cat adduser_dir.sh
  #!/bin/bash
  usage () {
  echo ""
  echo "  Please Input Correct infomation!"
  echo ""
  echo "  USAGE: `basename $0` username /dir ftp_server_ip"
  echo "  Exp: `basename $0` Lee /data/lee/home 1.1.1.1,2.2.2.2"
  echo ""
  echo "  Result:"
  echo "          UserName: Lee"
  echo "          UserHome: /data/lee/home"
  echo "          PassWord: N1Jy3Fqol"
  echo ""
  }
  if [[ $3 == ""  ]];then
  usage;
  exit 1;
  fi
  datetime=`date +%Y%m%d" "%H:%M:%S`
  userid=$1
  passwd=`mkpasswd -l 9 -d 2 -c 3 -C 3 -s 0`
  home=$2
  dst_passwd='{md5}'`/bin/echo -n "$passwd" | openssl dgst -binary -md5 | openssl enc -base64`
  shell='/sbin/nologin'
  accesshost=$3
  /usr/local/mysql/bin/mysql -u ftp_user -p'ws&&**ftp' -h 192.168.254.101 -e "\
  use proftpd;insert into FTPUSERS VALUES('$userid','$dst_passwd',500,100,'$home','/sbin/nologin','$accesshost','$datetime');"
  echo "UserName: $userid"
  echo "PassWord: $passwd"
  echo "userHome: $home"
  echo "FTP  IPs: $accesshost"
  echo ""
  [root@server:/usr/local/proftpd]# cat adduser_domain.sh
  #!/bin/bash
  usage () {
  echo ""
  echo "  Please Input Correct infomation!"
  echo ""
  echo "  USAGE: `basename $0` domainname ftp_server_ip"
  echo "  Exp: `basename $0` www.test.com 1.1.1.1,2.2.2.2"
  echo ""
  echo "  Result:"
  echo "          UserName: www.test.com"
  echo "          PassWord: N1Jy3Fqol"
  echo ""
  }
  if [[ $2 == ""  ]];then
  usage;
  exit 1;
  fi
  datetime=`date +%Y%m%d" "%H:%M:%S`
  userid=$1
  passwd=`mkpasswd -l 9 -d 2 -c 3 -C 3 -s 0`
  domain=$userid
  if [[ $1 =~ ^www ]];then
  domain=${1#www.}
  fi
  dst_passwd='{md5}'`/bin/echo -n "$passwd" | openssl dgst -binary -md5 | openssl enc -base64`
  home="/data/www/vhosts/$domain"
  shell='/sbin/nologin'
  accesshost=$2
  /usr/local/mysql/bin/mysql -u ftp_user -p'ws&&**ftp' -h 192.168.254.101 -e "\
  use proftpd;insert into FTPUSERS VALUES('$userid','$dst_passwd',500,100,'$home','/sbin/nologin','$accesshost','$datetime');"
  echo "UserName: $userid"
  echo "PassWord: $passwd"
  echo "FTP  IPs: $accesshost"
  echo ""
  关于用户限额配置:
  quotalimits
  name - username

  quota_type - user, group,>  per_session - true or false (we use false)
  limit_type - quota limit type - hard or soft (we use soft)
  bytes_in_avail - upload limit in bytes - allowed bytes on disk (eg diskquota)
  bytes_out_avail - download limit in bytes - allowed bytes a user can download
  bytes_xfer_avail - allowed bytes a user can transfer in/out
  files_in_avail - upload limit in files - allowed number of uploaded files
  files_out_avail - allowed number of downloaded files
  files_xfer_avail - allowed number of files a user can transfer in/out
  name 应该这样理解,既能表示单个用户,也能表示用户组名;如果我们在quota_type(限额类型)中使用group来认证的话,那就得在这里设置组名,这样整组都具有统一的磁盘限额的特性;当然您要在ftpgroups表中插入组纪录;并且在member字段中得把用户一个一个的列进去,这是后话了;先自己研究一下,只是插入纪录的事;我们只说最简单的单个用户的磁盘限额;默认值可以为空NULL,如果为空则针对所在有quota_type中设置的类型,比如在quota_type中设置为user ,就是针对所有ftpusers 中的用户起作用;如果是group名,也是对ftpgroups 所有组作用;
  quota_type 磁盘限额类型,可以设置为用户,也可以设置为用户组group ;如果您的name写的是用户组,那在这里就得设置为group来认定;默认为user认证;
  per_session 默认为false;
  limit_type 默认为soft;
  bytes_in_avail 用户占用空间大小,也就是家目录的空间最大可以让用户占用多少,单位是byte;默认为0,0是不受限制,以下同理;
  bytes_out_avail 注;所有下载文件的总和,默认为0;
  bytes_xfer_avail 注;一个用户上传下载流量总和,默认为0
  files_in_avail 注:限制上传文件总数,默认为0;
  files_out_avail 注;限制下载文件个数总计,默认为0
  files_xfer_avail 注:允许下载和上传的文件总和我,默认为0;
  由此看来,我们比如想让test用户,约束空间大小为100M,其它不受限制;则可用下面的mysql命令添加;
  先让我们对照quotalimits表的结构,然后根据表的结构来添加;
  mysql> describe quotalimits;
  +------------------+------------------------------------+------+-----+---------+-------+
  | Field            | Type                               | Null | Key | Default | Extra |
  +------------------+------------------------------------+------+-----+---------+-------+
  | name             | varchar(30)                        | YES  |     | NULL    |       |
  | quota_type       | enum('user','group','class','all') |      |     | user    |       |
  | per_session      | enum('false','true')               |      |     | false   |       |
  | limit_type       | enum('soft','hard')                |      |     | soft    |       |
  | bytes_in_avail   | float                              |      |     | 0       |       |
  | bytes_out_avail  | float                              |      |     | 0       |       |
  | bytes_xfer_avail | float                              |      |     | 0       |       |
  | files_in_avail   | int(10) unsigned                   |      |     | 0       |       |
  | files_out_avail  | int(10) unsigned                   |      |     | 0       |       |
  | files_xfer_avail | int(10) unsigned                   |      |     | 0       |       |
  +------------------+------------------------------------+------+-----+---------+-------+
  10 rows in set (0.00 sec)
  添加记录
  mysql>insert into quotalimits VALUES  ('test','user','false','soft','104857600','0','0','0','0','0');
  运算公式:
  1Kb=1024 byte
  1M=1024 Kb
  100M=100x1024 Kb= 100x1024x1024 byte=104857600 byte
  注意:磁盘限额生效,必须让FTP用户重新登录才有效;比如test用户正在ftp上,这时要先退出,然后再登录,这是磁盘限额就有效了;
  查看用户空间使用情况
  登录FTP后用下面的命令;
  quote site quota;
  举例:
  lftp test@192.168.1.5:/> quote site quota;
  200-The current quota for this session are [current/limit]:
  Name: test
  Quota Type: User
  Per Session: False
  Limit Type: Soft
  Uploaded Mb:         19.00/95.37


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-606060-1-1.html 上篇帖子: MySQL(一):基本原理 下篇帖子: MHA 多VIP 多MySQL实例的支持
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表