![MySQL 服务器静默安装](https://linux22.com/image/84190/MySQL%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E9%9D%99%E9%BB%98%E5%AE%89%E8%A3%85.png)
我想使用 SSH 连接和 bash 脚本在 Raspberry Pi (Debian) 上安装 mysql 服务器,其中包含安装命令。要点是,安装需要使用脚本自动完成。我不想在 SSH 窗口中出现任何用户交互或图形提示。
这就是为什么我使用以下代码来设置 mysql 服务器但阻止任何图形反馈:
sudo DEBIAN_PRIORITY=critical apt-get install -y -q mysql-server php5-mysql
到目前为止,它运行良好,安装运行没有任何提示等。但是当我在安装后尝试更改MySQL服务器的root密码时,我总是得到响应:
$ mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
我期望静默安装使用标准用户“root”和空密码,但我也尝试了很多其他可能的选项。我还尝试了其他命令,例如:
$ mysql -u "root" -p ""
$ mysql --user="root" --password=""
或者
$ mysqladmin -u root password ""
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
但不幸的是没有任何成功。
有谁知道一种方法,可以在脚本中以静默方式和非图形方式安装 mysql 服务器,并在脚本中配置 root 密码,或者在设置完所有内容后更改它?
答案1
在 Debian 中,您有/etc/mysql/debian.cnf
用户的密码debian 系统维护。
# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host = localhost
user = debian-sys-maint
password = xxxxxxxxxxxxxxxx
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host = localhost
user = debian-sys-maint
password = xxxxxxxxxxxxxxxx
socket = /var/run/mysqld/mysqld.sock
basedir = /usr
使用 [client] 部分中的用户和密码,您可以在 MySQL 安装后更改 root 密码。
那么你可以这样做:
PASS=`sudo awk '/password/ { print $3;exit }' /etc/mysql/debian.cnf`
echo "SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');" \
| mysql -u debian-sys-maint -p$PASS
答案2
我相信您正在尝试连接到 mysql-server 而不启动它。
在 mysql 中,有两个主要组件,服务器 ( mysqld
) 和客户端 ( mysql
)。你的第一个电话
apt-get install mysql-server php5-mysql
安装服务器(以及 mysql 对 php 的支持)。您没有在此调用中列出 mysql 客户端,但它将自动安装。然后你需要启动服务器。在 CentOS 中,这可以通过调用来完成(不确定 Ubuntu,但可能类似)
# /etc/rc.d/init.d/mysqld start
然后你就可以用你的命令连接到mysql服务器
$ mysql -u root