下载 Mysql [ 华为镜像 ] : Index of mysql-local/Downloads
目录
二、将tar包解压到local下面,并且重新命名为mysql
一、卸载Mariadb
# 查看 mariadb 数据库:
rpm -qa | grep mariadb
# 卸载 mariadb 数据库:
rpm -e --nodeps mariadb文件名
# 删除 etc 目录下的 my.cnf 文件( 可能不存在,不影响 ):
rm /etc/my.cnf
二、将tar包解压到local下面,并且重新命名为mysql
# 解压:
tar -xvf mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz -C /usr/local/
# 重命名:
[root@~ local]# mv mysql-8.0.13-linux-glibc2.12-x86_64/ mysql
三、添加mysql用户组和用户
# 首先检查 mysql 用户和组是否存在
cat /etc/group | grep mysql
cat /etc/passwd | grep mysql
# 添加 mysql 用户和组
groupadd mysql
useradd -r -g mysql mysql
四、初始化mysql配置表
# 创建 data 目录
[root@~ mysql]# mkdir data
# 修改当前目录为 mysql 用户
[root@~ mysql]# chown -R mysql:mysql ./
# 或者
[root@~ ~]# chown -R mysql.mysql /usr/local/mysql/
# 初始化数据库
[root@~ mysql]# ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
# 如果出现错误,则说明这是缺少numactl,这个时候如果是Centos就yum -y install numactl就可以解决,然后重新运行上面的initialize命令
# 如果出现以下错误:
./bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
则运行此代码:
yum install -y libaio
# initialize 成功会出现一个随机密码,记下
# 修改当前用户为root用户
[root@~ mysql]# chown -R root:root ./
# 修改当前的 data 目录为 mysql 用户
[root@~ mysql]# chown -R mysql:mysql data/
# 复制配置文件(如果没有my-default.cnf就手动创建一个文件,并且配置权限)
[root@~ support-files]# touch my-default.cnf
[root@~ support-files]# vim my-default.cnf
# 修改 my-default.cnf 配置文件
[mysqld]
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
socket = /usr/local/mysql/tmp/mysql.sock
lower_case_table_names=1
[client]
default-character-set=utf8
socket= /usr/local/mysql/tmp/mysql.sock
[mysql]
default-character-set=utf8
socket= /usr/local/mysql/tmp/mysql.sock
# 设置权限
[root@~ support-files]# chmod 777 ./my-default.cnf
[root@~ support-files]# cp ./my-default.cnf /etc/my.cnf
[root@~ mysql]# mkdir tmp
[root@~ mysql]# chmod 777 ./tmp/
# 修改 /etc/my.cnf 配置文件
[root@~ mysql]# vi /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3306
socket=/usr/local/mysql/tmp/mysql.sock
# 必填项
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
五、加入开机启动项
# copy
[root@~ mysql]# cp ./suport-files/mysql.server /etc/init.d/mysqld
# 增加执行权限
[root@~ mysql]# chmod 755 /etc/init.d/mysqld
# 注册启动服务
[root@~ mysql]# chkconfig --add mysqld
# 查看是否添加成功
[root@~ mysql]# chkconfig --list mysqld
# 启动服务
[root@~ mysql]# ./suport-files/mysql.server start --user=mysql
六、配置环境变量
[root@~ ~]# vi /etc/profile
# 末尾加上:
export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib
# 保存退出之后执行 让文件生效
[root@~ ~]# source /etc/profile
七、登录并修改初始密码
# 建立软链接
ln -s /usr/local/mysql/tmp/mysql.sock /tmp/mysql.sock
# 登录 mysql(密码为 initialize 成功生成的随机密码),
mysql -u root -p
############################
# 以下是在 Mysql 中执行 #
############################
# 选择 mysql 库
use mysql;
# 修改密码
alter user 'root'@'localhost' identified by '你的新mysql数据库密码';
# 查询 user 和 host ,并将 host 改成 ‘%’ (允许远程登录)
update user set host = '%' where user = 'root';
# 更新配置
flush privileges;
#选择 mysql 数据库
# 授权用户:任意主机以用户 root 和 root 密码连接到 mysql 服务器 (不需要进行此操作)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root密码' WITH GRANT OPTION;
# 更新配置 (不需要进行此操作)
flush privileges;
八、问题解决方案
# 经过以上步骤如果还连不上,可以试试以下方式,重置以下密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的新mysql数据库密码';
# Centos7重置 Mysql8 root 密码
九、开放端口
# 查看防火墙状态
firewall-cmd --state
# 查看已开放的列表
firewall-cmd --list-ports
# 添加要开放的列表
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 重启防火墙
firewall-cmd --reload