MySQL下载地址:MySQL :: Download MySQL Community Server
1、下载解压mysql
tar xvf mysql-8.0.31-linux-glibc2.12-x86_64.tar.xz
2、重命名
mv ./mysql-8.0.31-linux-glibc2.12-x86_64 /home/local/mysql/mysql-8.0.31
3、创建data文件(在mysql安装目录下)
mkdir data
4、配置环境(/etc/profile文件)
vim /etc/profile
底部加入下面内容:
export PATH=$PATH:/home/local/mysql/mysql-8.0.31/bin:/home/local/mysql/mysql-8.0.31/lib
使配置文件生效
source /etc/profile
5、配置my.cnf文件
vim /etc/my.cnf
[mysql]
default-character-set=utf8mb4
[client]
#port=3306
socket=/var/lib/mysql/mysql.sock[mysqld]
port=3306
#server-id=3306
user=mysql
general_log = 1
general_log_file= /var/log/mysql/mysql.log
socket=/var/lib/mysql/mysql.sock
basedir=/home/local/mysql/mysql-8.0.31
datadir=/home/local/mysql/mysql-8.0.31/data
log-bin=/home/local/mysql/mysql-8.0.31/data/mysql-bin
innodb_data_home_dir=/home/local/mysql/mysql-8.0.31/data
innodb_log_group_home_dir=/home/local/mysql/mysql-8.0.31/data/
character-set-server=utf8mb4
lower_case_table_names=1
autocommit=1
default_authentication_plugin=mysql_native_password
symbolic-links=0
# Disabling symbolic-links is recommended to prevent assorted security risks
# 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=/home/local/mysql/mysql-8.0.31/data/mysql.log
pid-file=/home/local/mysql/mysql-8.0.31/data/mysql.pid
6、初始化MySQL
切换导MySQL bin目录下
./mysqld --user=mysql --basedir=/home/local/mysql/mysql-8.0.31 --datadir=/home/local/mysql/mysql-8.0.31/data/ --initialize
下图红色框即为初始密码
7、 复制mysql.server文件(在MySQL安装目录)
cp ./support-files/mysql.server /etc/init.d/mysql
cp ./support-files/mysql.server /etc/init.d/mysqld
8、赋予权限
chown 777 /etc/my.cnf
chmod +x /etc/init.d/mysql
chmod +x /etc/init.d/mysqld
chown -R mysql:mysql /var/lib/mysql/ (没有则创建此文件)
9、启动MySQL并登录
service mysql start
mysql -uroot -p(输入上面的初始密码)
10、修改密码和允许远程登录
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
use mysql;
update user set host='%' where user='root';
flush privileges;(提交命令,不然不生效)
注意:关闭防火墙或者把3306加入白名单,不然远程登录不成功
加入白名单:
firewall-cmd --permanent --zone=public --add-port=3306/tcp
重启:
firewall-cmd --reload
查看端口是否加入成功
firewall-cmd --query-port=3306/tcp
查看防火墙状态
systemctl status firewalld
暂时关闭
systemctl stop firewalld永久关闭
systemctl disable firewalld
踩坑:
忘记初始密码或者初始成功后密码就提示过期
1、在/etc/my.cnf,[mysqld]下添加一行
skip-grant-tables
2、重启MySQL
service mysql restart
3、不输入密码直接加入MySQL
mysql -uroot -p
直接回车即可加入mysql
4、改密码
flush privileges;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';