树莓派3+的设置(备忘录)第4部分,安装MySQL(mariaDB)
我之前在Raspberry Pi 3+上安装了一张16GB的microSD卡,并将其用作web服务器。但是由于空间变得不够用,所以我决定重新建立环境并使用一张64GB的microSD卡。以下是我在重新配置环境时的备忘录。相比之前的安装,有很多地方都有了很大的改变,这让我感到非常惊讶。
前提
-
- このラズベリーパイは外部に公開はしません。(twitterへのポストはします)
-
- 普段、このRaspberry Pi 3+は午前7時から午後11時まで30分毎にcronでbotを運用しています。
- そのため一日当たりの作業時間は夜間の23時から0時までの1時間ぐらいをメンテナンス時間として作業を行う予定です。
由於我已經很久遠離這樣的世界,所以可能有很多不夠好的地方。請您指出來。
安装MySQL(MariaDB)。
我这次本来想像以前一样安装phpmyadmin,但安装后用户部分出了问题,让我很困扰,所以我决定先将操作全部转为使用SQL命令执行。
以下是我参考的网站。
由于在尝试安装MySQL时遇到了一些“找不到”的问题,我决定安装MariaDB。
$ sudo apt install mariadb-server
安裝完MariaDB後,我們希望進行一些設定。接下來是這個。
$ sudo /usr/bin/mysql_secure_installation
$ sudo systemctl start mariadb.service
設置的要點如下:
-
- rootのパスワード設定 → 設定する
-
- 匿名ユーザーの有無 → いらない
-
- リモートログインの有無 → 今回はコマンドラインで実行するので使うかもしれない いらない
-
- testデータベースの有無 → いらない
- 設定の反映 → やる
我会试一下到目前为止的情况,看能否登录。首先尝试不使用任何选项。
$sudo mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 36
Server version: 10.3.29-MariaDB-0+deb10u1 Raspbian 10
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
我认为在没有任何东西的情况下,我将开始手动创建用户。
/*ユーザー追加*/
create user `任意のユーザー名`@`localhost` IDENTIFIED BY '任意のパスワード';
/*追加したユーザーに権限を付加。mysql8以降では書式が変わったそうです。*/
GRANT ALL PRIVILEGES ON *.* TO `任意のユーザー名`@'localhost' WITH GRANT OPTION;
/*反映*/
FLUSH PRIVILEGES;
我想验证一下追加的用户是否可以在这里看到。
MariaDB [(none)]> SELECT Host, User, Password FROM mysql.user;
+-----------+-------------+-------------------------------------------+
| Host | User | Password |
+-----------+-------------+-------------------------------------------+
| localhost | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|
| localhost | hoge-hoge | *yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy|
+-----------+-------------+-------------------------------------------+
密码中包含有加密值。
接下来,我想要确认是否可以使用先前指定的用户进行登录。
$ sudo mysql --host=localhost --user=hoge-hoge --password=xxxxxxxxxxxxxxxxxxxxxx
我也可以来这边。
$ sudo mysql -uhoge-hoge -p
Enter password:
如果能够达到这个程度,我觉得后面的事情都可以在命令行中解决。我原本是这样想的,但是…
在PDO中无法连接到MySQL(已解决)
首先需要安装PDO驱动器。
$ sudo apt-get -y install php-mysql
进一步取消掉所有php.ini中关于mysql和pdo的行的注释。确认在phpinfo中也有“PDO drivers mysql”的说明。
参照此源代码,尝试使用root进行连接测试。
<?php
// defineの値は環境によって変えてください。
define('HOSTNAME', 'localhost');
define('DATABASE', 'hoge_data');
define('USERNAME', 'root');
define('PASSWORD', 'root-hoge');
try {
/// DB接続を試みる
$db = new PDO('mysql:host=' . HOSTNAME . ';dbname=' . DATABASE, USERNAME, PASSWORD);
$msg = "MySQL への接続確認が取れました。";
} catch (PDOException $e) {
$isConnect = false;
$msg = "MySQL への接続に失敗しました。<br>(" . $e->getMessage() . ")";
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>MySQL接続確認</title>
</head>
<body>
<h1>MySQL接続確認</h1>
<p><?php echo $msg; ?></p>
</body>
</html>
MySQL连接确认
无法连接到MySQL。
(SQLSTATE[HY000] [1698] 对用户’root’@’localhost’拒绝访问)
在MySQL5.7中,如果没有sudo权限,无法连接到root用户。我将尝试使用之前创建的另一个账户重新连接。
……我们连上了!
相关页面