Linux MySQL离线安装
一、准备工作
1. 下载MySQL安装包
- 访问MySQL官方网站,选择适合您Linux系统的MySQL版本进行下载。
- 通常推荐下载
Generic Linux (glibc 2.12)
版本的.tar.gz
压缩包,例如mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz
。 - 将下载好的安装包拷贝到Linux服务器的某个目录下,例如
/opt/mysql
。
2. 安装依赖包
在安装MySQL之前,需要确保系统已经安装了以下依赖包:
bash复制
sudo yum install -y libaio ncurses-compat-libs
如果使用的是apt
包管理器,可以使用以下命令:
bash复制
sudo apt-get update
sudo apt-get install -y libaio1
3. 创建MySQL用户和组
为了安全起见,MySQL应该以非root用户运行。创建一个专门的MySQL用户和组:
bash复制
sudo groupadd mysql
sudo useradd -r -g mysql -s /bin/false mysql
4. 创建安装目录
创建MySQL的安装目录和数据目录:
bash复制
sudo mkdir -p /usr/local/mysql
sudo mkdir -p /usr/local/mysql/data
sudo chown -R mysql:mysql /usr/local/mysql
sudo chown -R mysql:mysql /usr/local/mysql/data
二、安装MySQL
1. 解压安装包
进入存放MySQL安装包的目录,解压下载的文件:
bash复制
cd /opt/mysql
tar -xvf mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz -C /usr/local/mysql --strip-components=1
这里--strip-components=1
的作用是将解压后的文件直接放到/usr/local/mysql
目录下,而不是多一层文件夹。
2. 初始化MySQL
以mysql
用户身份初始化MySQL数据库:
bash复制
sudo -u mysql /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
初始化完成后,MySQL会生成一个临时密码,记录在日志文件中。可以通过以下命令查看临时密码:
bash复制
sudo grep 'temporary password' /usr/local/mysql/data/*.err
3. 配置MySQL
创建MySQL的配置文件my.cnf
,并将其放置在/etc
目录下:
bash复制
sudo vi /etc/my.cnf
在文件中添加以下内容:
ini复制
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/mysql.sock
port=3306
pid-file=/usr/local/mysql/mysql.pid
[client]
socket=/usr/local/mysql/mysql.sock
根据需要,可以进一步调整配置文件中的参数,例如内存使用、字符集等。
4. 启动MySQL服务
启动MySQL服务,并设置开机自启:
bash复制
sudo /usr/local/mysql/bin/mysqld_safe --user=mysql &
sudo cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
sudo systemctl enable mysql
sudo systemctl start mysql
三、配置MySQL
1. 修改默认密码
使用临时密码登录MySQL,然后修改默认密码:
bash复制
mysql -u root -p
输入临时密码后,执行以下命令修改密码:
sql复制
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
将new_password
替换为您希望设置的新密码。
2. 配置远程访问
如果需要从其他主机访问MySQL数据库,需要修改MySQL的用户权限。执行以下命令:
sql复制
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'new_password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
这将允许root
用户从任何IP地址访问MySQL数据库。出于安全考虑,建议仅允许信任的IP地址访问。
3. 创建数据库和用户
根据需要创建新的数据库和用户:
sql复制
CREATE DATABASE mydb;
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypassword';
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'%';
FLUSH PRIVILEGES;
将mydb
、myuser
和mypassword
替换为您需要的数据库名称、用户名和密码。
四、验证安装
1. 检查服务状态
检查MySQL服务是否正常运行:
bash复制
sudo systemctl status mysql
2. 登录MySQL
使用新密码登录MySQL:
bash复制
mysql -u root -p
输入密码后,如果能够成功登录,说明MySQL安装成功。
3. 测试数据库操作
在MySQL命令行中,执行以下命令测试数据库操作:
sql复制
USE mydb;
CREATE TABLE test_table (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50));
INSERT INTO test_table (name) VALUES ('Kimi');
SELECT * FROM test_table;
如果能够正常执行上述操作,说明MySQL安装并配置成功。
五、常见问题及解决方法
1. 启动失败
如果MySQL服务无法启动,可能是配置文件或数据目录有问题。检查日志文件:
bash复制
sudo tail -f /usr/local/mysql/data/*.err
根据日志中的错误信息进行排查。
2. 远程连接失败
如果无法从远程主机连接MySQL,可能是防火墙或用户权限问题:
-
确保防火墙允许MySQL端口(默认为3306):
bash复制
sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent sudo firewall-cmd --reload
-
确保MySQL用户权限已正确设置。
3. 性能问题
如果MySQL性能不佳,可以调整配置文件中的参数,例如:
ini复制
[mysqld]
innodb_buffer_pool_size = 2G
innodb_log_file_size = 512M
innodb_flush_log_at_trx_commit = 2
根据服务器的硬件配置调整参数,并重启MySQL服务。