Ubuntu 安装 MySQL 8 完整指南
一、准备工作
- 权限问题:如果执行命令时遇到权限问题,可在命令前添加
sudo
。 - 文件权限:某些文件或文件夹可能需要修改权限,例如使用
sudo chmod 777 文件或文件夹路径
。
二、下载与解压
- 进入目录:
cd /usr/local/
- 下载资源包:
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz
- 其他版本可在 MySQL 官方网站 获取。
- 解压:
tar -Jxvf mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz
三、配置
- 重命名文件夹:
mv mysql-8.0.32-linux-glibc2.12-x86_64 mysql8
- 添加环境变量:
- 编辑
/etc/profile
文件:sudo vim /etc/profile
- 在文件末尾追加:
export PATH=$PATH:/usr/local/mysql8/bin
- 重载环境变量:
source /etc/profile
- 编辑
- 安装依赖:
sudo apt-get install libtinfo5 sudo apt install libaio1
- 创建用户组和用户:
sudo groupadd mysql sudo useradd -r -g mysql mysql
- 设置数据目录:
sudo mkdir -p /usr/local/mysql8/data sudo chown -R mysql:mysql /usr/local/mysql8/data sudo chmod -R 700 /usr/local/mysql8/data
- 准备配置文件:
- 将
my.cnf
文件放置在/etc/
目录下:sudo vim /etc/my.cnf
- 配置文件内容:
[mysql] default-character-set=utf8mb4 [client] port=3306 socket=/tmp/mysql.sock [mysqld] port=3306 server-id=3306 user=mysql log_timestamps=SYSTEM default-time_zone='+8:00' socket=/tmp/mysql.sock basedir=/usr/local/mysql8 datadir=/usr/local/mysql8/data log-bin=/usr/local/mysql8/data/mysql-bin innodb_data_home_dir=/usr/local/mysql8/data innodb_log_group_home_dir=/usr/local/mysql8/data log-error=/usr/local/mysql8/data/mysql.log pid-file=/usr/local/mysql8/data/mysql.pid lower_case_table_names=1 character-set-server=utf8mb4 autocommit=1 skip-external-locking key_buffer_size=256M max_allowed_packet=1M table_open_cache=1024 sort_buffer_size=4M net_buffer_length=8K read_buffer_size=4M read_rnd_buffer_size=512K myisam_sort_buffer_size=64M thread_cache_size=128 tmp_table_size=128M explicit_defaults_for_timestamp=true max_connections=500 max_connect_errors=100 open_files_limit=65535 binlog_format=mixed binlog_expire_logs_seconds=864000 default_storage_engine=InnoDB innodb_data_file_path=ibdata1:10M:autoextend innodb_buffer_pool_size=1024M innodb_log_file_size=256M innodb_log_buffer_size=8M innodb_flush_log_at_trx_commit=1 innodb_lock_wait_timeout=50 transaction-isolation=READ-COMMITTED [mysqldump] quick max_allowed_packet=16M [myisamchk] key_buffer_size=256M sort_buffer_size=4M read_buffer=2M write_buffer=2M [mysqlhotcopy] interactive-timeout
- 将
四、安装与启动
- 初始化 MySQL:
sudo mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql8 --datadir=/usr/local/mysql8/data --user=mysql --initialize
- 初始化完成后,系统会生成一个临时密码,临时密码可以在以下日志文件中找到:
/usr/local/mysql8/data/error.log
- 示例输出:
A temporary password is generated for root@localhost: ;pq4R.Z?)OR?
- 初始化完成后,系统会生成一个临时密码,临时密码可以在以下日志文件中找到:
- 使用临时密码登录:
mysql -hlocalhost -uroot -p';pq4R.Z?)OR?' -P3306
- 输入临时密码后登录。
- 修改密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password123';
- 将
password123
替换为你想要设置的新密码。
- 将
- 授权远程访问:
CREATE USER 'root'@'%' IDENTIFIED BY 'password123'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'; FLUSH PRIVILEGES;
- 这样,
root
用户就可以从任何 IP 地址远程访问 MySQL 了。
- 这样,
五、启动 MySQL
- 启动 MySQL:
sudo /usr/local/mysql8/bin/mysqld_safe --defaults-file=/etc/my.cnf &
- 或者使用环境变量简化命令:
sudo mysqld_safe --defaults-file=/etc/my.cnf &
- 或者使用环境变量简化命令:
- 查看 MySQL 是否启动:
ps -ef | grep mysql
六、开机自启动
- 编写启动脚本:
- 创建
startMysql.sh
脚本:sudo vim /usr/local/startMysql.sh
- 脚本内容:
#!/bin/bash source ~/.profile mysql_cnf='/etc/my.cnf' mysql_safe_path='/usr/local/mysql8/bin/mysqld_safe' if [ ! -x "$mysql_safe_path" ]; then echo "Error: $mysql_safe_path not found or not executable." exit 1 fi $mysql_safe_path --defaults-file=${mysql_cnf} > /var/log/mysql_startup.log 2>&1 & echo "MySQL is starting in the background. Check /var/log/mysql_startup.log for details."
- 赋予脚本可执行权限:
sudo chmod +x /usr/local/startMysql.sh
- 创建
- 将脚本加入开机启动:
- 编辑
/etc/rc.local
文件:sudo vim /etc/rc.local
- 添加以下内容:
#!/bin/sh -e /usr/local/startMysql.sh exit 0
- 确保文件可执行:
sudo chmod +x /etc/rc.local
- 编辑
七、验证安装
-
远程连接测试:
- 在另一台机器上使用以下命令测试远程连接:
mysql -h<你的服务器IP> -uroot -p
- 输入密码后,如果能够成功登录,则说明远程连接已成功配置。
- 在另一台机器上使用以下命令测试远程连接:
-
查看数据库列表:
SHOW DATABASES;
以上是完整的 Ubuntu 安装 MySQL 8 的指南,涵盖了从安装、配置到启动、授权远程访问以及开机自启动的全部步骤。按照这些步骤操作即可完成 MySQL 8 的安装和配置。