天天看點

CentOS7下Apache2.4.6使用MySQL5.7驗證

由于環境新更新到了CentOS 7,Apache 2.4.6已經不支援mod_auth_mysql進行驗證,我們主要通過MySQL驗證SVN賬号密碼。

1

<code>yum -y </code><code>install</code> <code>httpd httpd-devel mod_dav_svn mod_ssl apr-util-mysql</code>

1.使用dbd進行認證,無法與其他工具進行內建,比如Zabbix,禅道(将密碼md5加密存儲)

2

3

4

5

6

7

8

9

10

11

12

13

<code>DBDriver mysql</code>

<code>DBDParams </code><code>"host=192.168.0.75 port=3306 dbname=svn user=test password=test"</code>

<code>DBDMin 1</code>

<code>DBDKeep 2</code>

<code>DBDMax 10</code>

<code>DBDExptime 60</code>

<code>&lt;Location </code><code>"/"</code><code>&gt;</code>

<code>AuthType Basic</code>

<code>AuthName </code><code>"SVN Auth"</code>

<code>AuthBasicProvider dbd</code>

<code>AuthDBDUserPWQuery </code><code>"select password from account where is_enable =1 and user = %s"</code>

<code>&lt;</code><code>/Location</code><code>&gt;</code>

資料庫則為

&gt; select * from user;

+----+-------+-------------------------------------------+-----------+

| id | user  | password                                                     | is_enable  |

|  4 | test  | {SHA}qUqP5cyxm6YcTAhz05Hph5gvu9M= |         1      |

以上隻有test賬号可以正常使用,其他明文密碼和直接md5加密是無法使用的

密碼的生成有以下幾種加密方式,把以下的密碼插入資料庫

<code>-- bcrypt</code>

<code>$ htpasswd -nbB myName myPassword</code>

<code>myName:$2y$05$c4WoMPo3SXsafkva.HHa6uXQZWr7oboPiC2bT</code><code>/r7q1BB8I2s0BRqC</code>

<code>-- MD5</code>

<code>$ htpasswd -nbm myName myPassword</code>

<code>myName:$apr1$r31.....$HqJZimcKQFAMYayBlzkrA/</code>

<code>-- SHA1</code>

<code>$ htpasswd -nbs myName myPassword</code>

<code>myName:{SHA}VBPuJHI7uixaa6LQGWx4s+5GKNE=</code>

<code>-- CRYPT</code>

<code>$ htpasswd -nbd myName myPassword</code>

<code>myName:rqXexS6ZhobKA</code>

2.手動安裝mod_auth_mysql

下載下傳軟體包及更新檔

<code>wget https:</code><code>//nchc</code><code>.dl.sourceforge.net</code><code>/project/modauthmysql/modauthmysql/3</code><code>.0.0</code><code>/mod_auth_mysql-3</code><code>.0.0.</code><code>tar</code><code>.gz</code>

<code>wget https:</code><code>//sourceforge</code><code>.net</code><code>/p/modauthmysql/patches/13/attachment/mod_auth_mysql_3</code><code>.0.0_patch_apache2.4.</code><code>diff</code>

安裝依賴包:

<code>yum -y </code><code>install</code> <code>mariadb-libs mariadb maraidb-devel patch</code>

安裝子產品及配置:

14

15

16

17

18

<code># tar zxf mod_auth_mysql-3.0.0.tar.gz</code>

<code># cd mod_auth_mysql-3.0.0</code>

<code># patch -p0 &lt; ../mod_auth_mysql_3.0.0_patch_apache2.4.diff</code>

<code>can't </code><code>find</code> <code>file</code> <code>to patch at input line 3</code>

<code>Perhaps you used the wrong -p or --strip option?</code>

<code>The text leading up to this was:</code>

<code>--------------------------</code>

<code>|--- mod_auth_mysql-3.0.0</code><code>/mod_auth_mysql</code><code>.c      2005-06-22 12:17:45.000000000 -0400</code>

<code>|+++ mod_auth_mysql-3.0.0_patch_apache_2.4</code><code>/mod_auth_mysql</code><code>.c     2013-12-30 18:07:27.646704470 -0500</code>

<code>File to patch: mod_auth_mysql.c        </code><code>#此處輸入mod_auth_mysql.c執行即可</code>

<code>patching </code><code>file</code> <code>mod_auth_mysql.c</code>

<code>編譯子產品:</code>

<code># apxs -c -L/usr/lib/mysql -I/usr/include/mysql -lmysqlclient -lm -lz mod_auth_mysql.c</code>

<code>安裝子產品:</code>

<code># apxs -i mod_auth_mysql.la</code>

最後在httpd.conf末尾增加配置檔案

LoadModule mysql_auth_module modules/mod_auth_mysql.so

檢查是否報錯:

httpd -t

以上在正常情況下是這樣的,但是5.7的就會報錯,必須安裝如下幾個包:

mysql-community-libs-compat

mysql-community-libs

mysql-community-client

mysql-community-common

如果遇上錯誤,則可以在未安裝5.7的機器上使用yum安裝的mariadb-libs進行編譯,然後上傳到5.7的機器,測試後發現無任何問題。

本文轉自 rong341233 51CTO部落格,原文連結:http://blog.51cto.com/fengwan/1979922