1. 进入/opt目录: cd /opt
下载tar包:
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz
2.在opt目录下创建mysql目录:mkdir mysql
解压: tar -zxvf mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz -C mysql 得到mysql-8.0.11-linux-glibc2.12-x86_64
3.重命名: mv mysql-8.0.11-linux-glibc2.12-x86_64 mysql8
4.创建文件夹data,存储文件
cd /opt/mysql/mysql8/
mkdir ./data
5.创建用户及用户组
# 用户组
groupadd mysql
# 用户 (用户名/密码)
useradd -g mysql mysql
6.授权
chown -R mysql.mysql /usr/local/mysql8.0/ # 亲测
或
chown -R mysql .
chgrp -R mysql .
7.初始化数据库
# 查看当前所在目录
pwd
# 若显示/opt/mysql/mysql8,请继续执行,否则请先进入此目录/opt/mysql/mysql8
8.初始化 注意查看是否存在相关目录,若不存在,请新建
./bin/mysqld --user=mysql --basedir=/opt/mysql/mysql8/ --datadir=/opt/mysql/mysql8/data/ --initialize
9.Mysql配置: vi /etc/my.cnf
[client]
port=3306
socket=/opt/mysql/mysql8/mysql.sock
[mysqld]
port=3306
user=mysql
socket=/opt/mysql/mysql8/mysql.sock
basedir=/opt/mysql/mysql8
datadir=/opt/mysql/mysql8/data
log-error=error.log
# lc-messages-dir=/usr/share/mysql/english
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld_safe]
# log-error=/var/log/mariadb/mariadb.log
# pid-file=/var/run/mariadb/mariadb.pid
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
10. 建立MySQL服务(注意当前路径应该在mysql8.0,即support-files的根目录)
# 添加Mysql到系统服务
cp -a ./support-files/mysql.server /etc/init.d/mysql # 若mysqld,以下mysql相应的修改mysqld,如下图所示
chmod +x /etc/init.d/mysql
chkconfig --add mysql
# 检查服务是否生效
chkconfig --list mysql
11.启动Mysql服务
-
# 启动: service mysql start;
-
# 查看启动状态:service mysql status;
-
ln -s /usr/local/mysql/mysql8.0/bin/mysql /usr/bin
12.登陆Mysql:(登录后只能先修改密码)
# 登陆:mysql -uroot -p
13.克隆当前窗口,查找初始密码
cd /opt/mysql/mysql8/data/
cat error.log
14.修改密码:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
15.授权 root 用户的所有权限并设置远程访问
关键的三个命令:
> mysql>CREATE USER 'root'@'%' IDENTIFIED BY '新密码'; //这个操作是mysql 8.0中得加的
> mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION; //任何远程主机都可以访问数据库
> mysql> FLUSH PRIVILEGES; //需要输入次命令使修改生效
16.远程登陆
17.发现登陆有问题,是服务器防火墙的问题:
解决无法远程连接CentOS8上的MySQL8数据库方法
方法一:在防火墙设置中手动添加端口号
1.查看CentOS的防火墙状态:(active表示已开启)
systemctl status firewalld.service
说明:如果关闭防火墙,则直接可以远程连接,但是出于安全考虑不建议关闭防火墙。
2.查看当前防火墙所有开放的端口
firewall-cmd --list-ports
3.添加mysql端口(mySQL默认端口号3306)
firewall-cmd --permanent --zone=public --add-port=3306/tcp
4.重启防火墙
systemctl restart firewalld.service
5.再次查看所有开放的端口
firewall-cmd --list-ports
方法一:关闭防火墙
systemctl stop firewalld.service
systemctl status firewalld.service
18.此时即可发现可以远程登录了
19.其他问题,我在设置远程登录设置的时候,误将密码设置成了root,即:CREATE USER 'root'@'%' IDENTIFIED BY 'root';
但是实际我的密码是123456,而CREATE USER 'root'@'%' IDENTIFIED BY 'root';的意思就是我远程登录的时候密码必须是root才能可以登录,但我就是想设置为123456,该怎么办呢?
解决方法:
mysql> alter USER 'root'@'%' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.01 sec)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION ;
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)