在Ubuntu环境中安装 mysql-server
以及 MySQL 开发包(包括头文件和动态库文件),并处理最新版本MySQL初始自动生成的用户名和密码,可以通过官方的APT包管理器轻松完成。以下是详细的步骤指南,包括从官方仓库和MySQL官方仓库安装的两种方法,并介绍如何处理自动生成的初始用户名和密码,以及如何修改root初始密码。
方法一:使用Ubuntu官方仓库安装
步骤一:更新系统包列表
首先,确保您的系统包列表是最新的:
sudo apt update
sudo apt upgrade -y
步骤二:安装 MySQL Server
使用APT安装MySQL服务器:
sudo apt install -y mysql-server
说明:
- 该命令将安装最新版本的MySQL服务器以及相关依赖项。
步骤三:安装 MySQL 开发包
安装包含头文件和动态库文件的开发包:
sudo apt install -y libmysqlclient-dev
说明:
libmysqlclient-dev
包含用于开发的MySQL头文件和动态库文件。
步骤四:启动并配置 MySQL 服务
启动MySQL服务
sudo systemctl start mysql
设置MySQL开机自启动
sudo systemctl enable mysql
检查MySQL服务状态
sudo systemctl status mysql
您应该看到类似如下的输出,表示MySQL正在运行:
● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since ...
步骤五:处理初始自动生成的用户名和密码
在最新版本的MySQL安装过程中,系统会自动为root用户生成一个临时密码。您需要找到该临时密码并进行更改。
1. 查找临时密码
安装完成后,MySQL会将临时密码记录在日志文件中。使用以下命令查看日志并获取临时密码:
sudo grep 'temporary password' /var/log/mysql/error.log
您将看到类似如下的输出:
[Date Time] [Note] A temporary password is generated for root@localhost: xXxXxXxXxXx
记下该临时密码(例如 xXxXxXxXxXx
)。
2. 运行安全性脚本
为了提高MySQL的安全性,并修改初始密码,建议运行官方提供的安全性脚本:
sudo mysql_secure_installation
您将被提示执行以下操作:
- 输入当前root密码:使用上一步骤中获取的临时密码。
- 设置新root密码:根据提示设置一个强密码。
- 移除匿名用户:建议移除。
- 禁止远程root登录:建议禁止以提高安全性。
- 移除测试数据库:建议移除。
- 重新加载权限表:选择是以应用更改。
示例交互:
Enter password for user root:
You must change the password now (y/N)? Y
New password:
Re-enter new password:
Password updated successfully!
Remove anonymous users? (Y/n) Y
Disallow root login remotely? (Y/n) Y
Remove test database and access to it? (Y/n) Y
Reload privilege tables now? (Y/n) Y
步骤六:修改root初始密码(手动方法)
如果您需要手动修改root密码,可以按照以下步骤操作:
1. 登录MySQL
使用当前root密码登录MySQL:
sudo mysql -u root -p
2. 修改root密码
在MySQL命令行中执行以下命令以修改root用户的密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewStrongPassword!';
FLUSH PRIVILEGES;
说明:
- 将
YourNewStrongPassword!
替换为您希望设置的新密码。
3. 验证密码修改
退出MySQL并重新登录以验证新密码是否生效:
exit
sudo mysql -u root -p
输入新密码后,您应能成功登录。
4. 忘记root密码时的重置方法
如果您忘记了root密码,可以通过以下步骤重置:
停止MySQL服务
sudo systemctl stop mysql
以安全模式启动MySQL
sudo mysqld_safe --skip-grant-tables &
登录MySQL
sudo mysql -u root
修改root密码
在MySQL命令行中执行:
FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewStrongPassword!'; FLUSH PRIVILEGES; EXIT;
停止安全模式下的MySQL
首先找到MySQL进程ID:
sudo killall mysqld
重新启动MySQL服务
sudo systemctl start mysql
使用新密码登录
sudo mysql -u root -p
步骤七:验证安装
登录MySQL
sudo mysql -u root -p
输入您在
mysql_secure_installation
或手动修改时设置的新密码后,您将进入MySQL命令行界面。检查MySQL版本
在MySQL命令行中运行:
SELECT VERSION();
您将看到MySQL的版本信息。
步骤八:配置防火墙(可选)
如果您需要通过网络访问MySQL,确保防火墙允许3306端口的流量。
如果使用UFW防火墙
sudo ufw allow 'MySQL'
或者更具体地:
sudo ufw allow 3306/tcp
重新加载防火墙规则
sudo ufw reload
注意: 为了安全起见,建议仅允许受信任的IP地址访问MySQL服务。
方法二:使用MySQL官方仓库安装最新版本
如果您需要安装MySQL的最新版本,可以使用MySQL官方提供的APT仓库。
步骤一:下载并添加MySQL APT仓库
下载MySQL APT仓库配置包
wget https://dev.mysql.com/get/mysql-apt-config_0.8.26-1_all.deb
注意: 请访问 MySQL APT Repository 页面,确保下载最新版本的
mysql-apt-config
包。安装MySQL APT仓库配置包
sudo dpkg -i mysql-apt-config_0.8.26-1_all.deb
在安装过程中,您将看到一个配置界面,选择您需要的MySQL版本(如8.0),然后确认。
更新系统包列表
sudo apt update
步骤二:安装 MySQL Server
sudo apt install -y mysql-server
步骤三:安装 MySQL 开发包
sudo apt install -y libmysqlclient-dev
步骤四至步骤七
按照方法一中的 步骤四 到 步骤八 完成MySQL服务的启动、配置、安全性设置和验证。
附加步骤:配置MySQL远程访问(可选)
如果需要从远程主机访问MySQL服务器,需进行以下配置:
步骤一:修改MySQL配置文件
编辑MySQL配置文件
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
找到
bind-address
行并修改将:
bind-address = 127.0.0.1
修改为:
bind-address = 0.0.0.0
说明: 这将允许MySQL监听所有IP地址。
保存并关闭文件(按
Ctrl + O
保存,按Ctrl + X
退出)
步骤二:重启MySQL服务
sudo systemctl restart mysql
步骤三:创建远程访问用户
登录MySQL
sudo mysql -u root -p
创建新用户并授予权限
CREATE USER 'username'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
注意: 替换
username
和password
为您的实际用户名和密码。
步骤四:配置防火墙
确保防火墙允许来自远程主机的连接:
sudo ufw allow 3306/tcp
sudo ufw reload
注意: 为了安全起见,建议限制允许访问MySQL的IP地址。例如,只允许特定IP访问:
sudo ufw allow from <your_ip_address> to any port 3306
将 <your_ip_address>
替换为允许访问的IP地址。
常见问题排查
1. 无法启动MySQL服务
解决方案:
查看错误日志:
sudo journalctl -u mysql
检查配置文件是否有语法错误。
确保没有端口冲突(如其他服务占用了3306端口)。
2. 无法连接到MySQL服务器
解决方案:
确保MySQL服务正在运行:
sudo systemctl status mysql
检查防火墙设置是否允许连接。
确认MySQL用户有足够的权限,并且密码正确。
如果是远程连接,确保MySQL配置文件中的
bind-address
设置正确,并且用户权限允许从远程主机连接。
3. 安装 libmysqlclient-dev
后仍提示找不到头文件
解决方案:
确认开发包安装成功:
dpkg -l | grep libmysqlclient-dev
检查头文件路径是否正确,例如
/usr/include/mysql/
。在编译时,确保编译器能够找到头文件和库文件,可能需要在编译命令中添加
-I/usr/include/mysql
和-L/usr/lib/mysql
等选项。
4. 忘记root密码
解决方案:
参考步骤六中的 忘记root密码时的重置方法,通过停止MySQL服务、以安全模式启动、修改密码、重启服务等步骤来重置root密码。