1. 准备工作
1、查询历史安装的数据库。
rpm -qa | grep mariadb
mariadb
与mysql
用的是同样的引擎,一般企业版的 CentOS7 会带上该数据库,不需要这个,可删!
2、卸载 mariabd
,替换成自己查出的文件名。
rpm -e --nodeps <文件名>
3、使用上述命令,查看是否安装过 MySQL,有的话则卸载。
4、上传 MySQL 安装包到 Linux 的 /opt
目录。
ls /opt
# 我上传的安装包
mysql-8.0.25-linux-glibc2.12-x86_64.tar.xz
5、解压安装包到当先目录,替换成自己的安装包。
tar Jxvf <文件名>
6、将解压后的文件重命名,并移动到 /usr/local
目录下
mv <解压后文件名> mysql
mv mysql /usr/local/
2. 配置
1、添加环境变量
echo "export MYSQL_HOME=/usr/local/mysql" >> /etc/profile
echo "export PATH=$MYSQL_HOME/bin:$PATH" >> /etc/profile
source /etc/profile
2、创建数据目录
mkdir /usr/local/mysql/data
3、检查是否有历史的配置文件,有的话则删除
find my.conf
# 如果找不到,则提示:
find: ‘my.conf’: 没有那个文件或目录
4、创建并编辑配置文件 /etc/my.conf
,并添加下面的内容
vim /etc/my.conf
[client]
port=3306
socket=/tmp/mysql.sock
[mysqld]
port=3306
user=mysql
socket=/tmp/mysql.sock
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
log-error=/usr/local/mysql/error.log
pid-file = /usr/local/mysql/mysql.pid
transaction_isolation = READ-COMMITTED
character-set-server = utf8
collation-server = utf8_general_ci
lower_case_table_names = 1
sql_mode = "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO"
5、创建 mysql 组
groupadd mysql
6、创建 mysql 用户,并加入 mysql 组
useradd -g mysql mysql
7、修改 mysql 目录的所属用户及权限
chown -R mysql:mysql /usr/local/mysql
chmod -R 755 /usr/local/mysql
8、初始化 mysql,会生成一个临时的密钥,记得保存
cd /usr/local/mysql
./bin/mysqld --initialize --user=mysql
9、尝试启动 mysql
cd /usr/local/mysql
./support-files/mysql.server start
# 启动成功
Starting MySQL.Logging to '/usr/local/mysql/data/node1.err'.
SUCCESS!
10、将 mysql 添加为服务
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
11、设置 mysql 为开机自启
cd /etc/init.d
chmod 755 /etc/init.d/mysql
chkconfig --add mysql
chkconfig --level 345 mysql on
12、重启 mysql
service mysql restart
Shutting down MySQL. SUCCESS!
Starting MySQL. SUCCESS!
3. 登录 MySQL
1、使用前面保存的临时密码登录 mysql
mysql -u root -p
# 输入临时密码
2、在 mysql 中重置密码
ALTER user 'root'@'localhost' IDENTIFIED BY '123456';
3、开启远程访问
CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
GRANT ALL ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;
❤️ END ❤️