承风 發表於 2023-7-8 01:21:00

Debian 12安装phpMyAdmin记录

<blockquote>
<p>使用<code>apt install phpmyadmin</code>总会报错<code>AH01071: Got error 'PHP message: PHP Fatal error:Uncaught Error: Call to undefined function Symfony\\Component\\DependencyInjection\\array_is_list() </code>。查询资料显示array_is_list()是PHP8.1的特性,但phpMyAdmin官方明确5.2.1版本支持PHP7.4及以上。因此尝试源码安装</p>
</blockquote>
<pre><code># 运行环境
Debian 12 + apache2.4 + php8.0 + mysql5.7
</code></pre>
<h4 id="1-源码包下载">1. 源码包下载</h4>
<pre><code># 1. 下载
cd ~
mkdir download
cd download
wget https://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-all-languages.tar.gz

# 2. 解压
tar -zxvf phpMyAdmin-5.2.1-all-languages.tar.gz

# 3. 复制文件夹到指定目录(apt安装会将其安到/usr/share/phpmyadmin)
sudo mv phpMyAdmin-5.2.1-all-languages/ /usr/share/phpmyadmin
</code></pre>
<h4 id="2-在mysql中创建超级用户">2. 在MySQL中创建超级用户</h4>
<pre><code># 登录mysql
mysql -u root -p

# 1. 添加用户pma(配置文件时用)
#% 符号告诉MySQL允许该用户从远程的任何地方登录。如果你想提高安全性,你可以用一个IP地址来代替它。密码更换为自己的
CREATE USER 'pma'@'%' IDENTIFIED BY 'password_here';

# 2. 赋予超级用户权限
GRANT ALL PRIVILEGES ON *.* TO 'pma'@'%' WITH GRANT OPTION;
</code></pre>
<h4 id="3-创建临时文件夹">3. 创建临时文件夹</h4>
<pre><code>sudo mkdir -p /var/lib/phpmyadmin/tmp
# 将www-data(Apache 等 Web 服务器默认用于 Ubuntu 和 Debian 系统中的正常操作的 Linux 用户配置文件)设置为该目录的所有者
sudo chown -R www-data:www-data /var/lib/phpmyadmin
</code></pre>
<h4 id="4-phpmyadmin配置">4. PHPMyAdmin配置</h4>
<pre><code># 1. 复制实例配置文件并重命名为config.inc.php
sudo cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php

# 2. 编辑配置
sudo vim /usr/share/phpmyadmin/config.inc.php

# 2.1 phpMyAdmincookie默认使用身份验证方法,它允许您在cookie的帮助下以任何有效的 MySQL 用户身份登录到 phpMyAdmin 。在这种方法中,MySQL 用户密码存储在临时 cookie 中,并使用高级加密标准 (AES) 算法进行加密。历史上,phpMyAdmin 曾为此使用Blowfish 密码,这仍然反映在其配置文件中。向下滚动到以 开头的行$cfg['blowfish_secret']
# 在''中输入一个32位的随机字符;shell中可使用pwgen -s 32 1命令创建,然后复制进来
$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

# 2.2 配置/* User used to manipulate with storage */
## 在只有一个用户访问phpMyAdmin的情况下不需要这个特殊的用户帐户,但在多用户场景中推荐使用。通过删除前面的斜杠来取消对controluserandcontrolpass指令的注释。然后更新controlpass指令以指向您选择的安全密码。如果您不这样做,默认密码将保持不变,未知用户可以通过 phpMyAdmin 界面轻松访问您的数据库。
. . .
/* User used to manipulate with storage */
// $cfg['Servers'][$i]['controlhost'] = '';
// $cfg['Servers'][$i]['controlport'] = '';
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'password';      // 密码为之前创建的用户密码
. . .

# 2.3 配置/* Storage database and tables */
## 本节包括许多定义phpMyAdmin 配置存储、数据库和管理pma数据库用户使用的几个表的指令。这些表启用了 phpMyAdmin 中的许多功能,包括书签、评论、PDF 生成等。取消本节参数的注释
. . .
/* Storage database and tables */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';
. . .

# 2.4 配置临时文件路径
# 在配置文件末尾添加:
$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';

# 2.5 在MySQL中创建phpMyAdmin的数据库和表(储存其自身的配置)
sudo mysql -u root -p &lt; /usr/share/phpmyadmin/sql/create_tables.sql
</code></pre>
<h4 id="5-配置apache支持phpmyadmin">5. 配置Apache支持phpMyAdmin</h4>
<pre><code># 1. 创建phpMyAdmin Apache2配置文件
sudo vim /etc/apache2/conf-available/phpmyadmin.conf

# phpMyAdmin default Apache configuration

Alias /phpmyadmin /usr/share/phpmyadmin

&lt;Directory /usr/share/phpmyadmin&gt;
    Options SymLinksIfOwnerMatch
    DirectoryIndex index.php

    &lt;IfModule mod_php5.c&gt;
      &lt;IfModule mod_mime.c&gt;
            AddType application/x-httpd-php .php
      &lt;/IfModule&gt;
      &lt;FilesMatch ".+\.php$"&gt;
            SetHandler application/x-httpd-php
      &lt;/FilesMatch&gt;

      php_value include_path .
      php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
      php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
      php_admin_value mbstring.func_overload 0
    &lt;/IfModule&gt;
    &lt;IfModule mod_php.c&gt;
      &lt;IfModule mod_mime.c&gt;
            AddType application/x-httpd-php .php
      &lt;/IfModule&gt;
      &lt;FilesMatch ".+\.php$"&gt;
            SetHandler application/x-httpd-php
      &lt;/FilesMatch&gt;

      php_value include_path .
      php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
      php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
      php_admin_value mbstring.func_overload 0
    &lt;/IfModule&gt;

&lt;/Directory&gt;

# Authorize for setup
&lt;Directory /usr/share/phpmyadmin/setup&gt;
    &lt;IfModule mod_authz_core.c&gt;
      &lt;IfModule mod_authn_file.c&gt;
            AuthType Basic
            AuthName "phpMyAdmin Setup"
            AuthUserFile /etc/phpmyadmin/htpasswd.setup
      &lt;/IfModule&gt;
      Require valid-user
    &lt;/IfModule&gt;
&lt;/Directory&gt;

# Disallow web access to directories that don't need it
&lt;Directory /usr/share/phpmyadmin/templates&gt;
    Require all denied
&lt;/Directory&gt;
&lt;Directory /usr/share/phpmyadmin/libraries&gt;
    Require all denied
&lt;/Directory&gt;
&lt;Directory /usr/share/phpmyadmin/setup/lib&gt;
    Require all denied
&lt;/Directory&gt;



# 2. 启用phpMyAdmin配置文件
sudo a2enconf phpmyadmin.conf
sudo systemctl reload apache2

# 3.浏览器访问测试
http://&lt;域名&gt;/phpmyadmin
</code></pre>
<h4 id="6-安全性控制">6. 安全性控制</h4>
<blockquote>
<p>phpMyAdmin 是攻击者的热门目标,您应该格外小心以防止未经授权的访问。</p>
</blockquote>
<h5 id="61-为phpmyadmin设置别名">6.1 为phpMyAdmin设置别名</h5>
<blockquote>
<p>机器人和攻击者不断扫描web服务器,寻找默认的phpMyAdmin登录页面,因此建议您将URL更改为其他内容。<br>
在本例中,我们将把它从<code>example.com/phpmyadmin</code>更改为 <code>example.com/pmahidden</code> 。</p>
</blockquote>
<pre><code># 通过更改phpMyAdmin配置文件实现
sudo vim /etc/apache2/conf-available/phpmyadmin.conf
Alias pmahidden /usr/share/phpmyadmin

# 浏览器测试访问
http://&lt;域名&gt;/pmahidden
</code></pre>
<h5 id="62-允许-htaccess-覆盖">6.2 允许. htaccess 覆盖</h5>
<blockquote>
<p>使用 Apache 的内置<code>.htaccess</code><strong>身份验证</strong>和<strong>授权</strong>功能在整个应用程序前面放置一个网关。</p>
</blockquote>
<pre><code># 1. 编辑 Apache 配置文件来启用文件覆盖的使用
sudo vim /etc/apache2/conf-available/phpmyadmin.conf
&lt;Directory /usr/share/phpmyadmin&gt;
    Options FollowSymLinks
    DirectoryIndex index.php
    AllowOverride All                        # 新增

    &lt;IfModule mod_php5.c&gt;
    . . .
# 2. 重启Apache
sudo systemctl restart apache2

# 3. 设置 .htpasswd
## 在 phpMyAdmin 安装目录中创建一个新的 .htaccess 文件
sudo vim /usr/share/phpmyadmin/.htaccess
# &gt;&gt;&gt;添加:
AuthType Basic        # 此行指定您正在实施的身份验证类型。此类型将使用密码文件实现密码认证
AuthName "Restricted Files"        # 这将设置身份验证对话框的消息。您应该保持这种通用性,以便未经授权的用户不会获得有关受保护内容的任何信息。
AuthUserFile /usr/share/phpmyadmin/.htpasswd        # 这设置将用于身份验证的密码文件的位置。这应该在正在提供服务的目录之外。我们很快就会创建这个文件。
Require valid-user        # 这指定只有经过身份验证的用户才能访问此资源。这实际上是阻止未经授权的用户进入。

# 4. 密码文件选择的位置是/usr/share/phpmyadmin/.htpasswd. 您现在可以创建此文件并将其传递给该htpasswd实用程序的初始用户
sudo htpasswd -c /usr/share/phpmyadmin/.htpasswd username
# 系统将提示您为正在创建的用户选择并确认密码。之后,将使用您输入的散列密码创建该文件。
</code></pre><br><br>
来源:https://www.cnblogs.com/sqsgoodluck/p/17536483.html
頁: [1]
查看完整版本: Debian 12安装phpMyAdmin记录