1、下载 mysql5.7的安装包
下载地址:传送门
2、上传并解压下载好的压缩包
2-1 解压上传的压缩包:
tar xzvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
2-2 依次执行如下命令:
剪切到/usr/local/目录下 mv mysql-5.7.24-linux-glibc2.12-x86_64 /usr/local/
重命名为mysql mv mysql-5.7.24-linux-glibc2.12-x86_64 /usr/local/mysql
2-3 进入/usr/local/mysql/,创建data文件夹
mkdir /usr/local/mysql/data/
3、创建mysql用户组并设置权限
groupadd mysql
useradd -g mysql mysql
chown -R mysql:mysql /usr/local/mysq
chmod -R 755 /usr/local/mysql
4、编译安装并初始化mysql,请务必记录初始密码(数据库管理员临时密码)
cd /usr/local/mysql/bin
./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql
5、编辑my.cnf文件,添加如下信息
[root@localhost bin]# vi /etc/my.cnf
[mysqld]
datadir=/usr/local/mysql/data
port=3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0
max_connections=600
innodb_file_per_table=1
lower_case_table_names=1
6、启动mysql
/usr/local/mysql/support-files/mysql.server start
注意:如果启动mysql时候出现如下类似问题,可按照下面的方法解决
Starting MySQL.2020-10-17T07:27:42.348112Z mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'.
ERROR! The server quit without updating PID file (/usr/local/mysql/data/localhost.localdomain.pid).
这儿很明显,说我并没有/var/log/mariadb/mariadb.log这个文件,我们可以自己创建同时给予权限
chown -R mysql:mysql /var/log/mariadb/
修改完成后重启mysql服务
service mysql restart
7、登录mysql并且修改密码
登录命令: mysql -utoot -p
输入第四步保存后的密码,如果输入密码后出现如下错误
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
修改my.cnf文件
[mysqld]
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
socket=/var/lib/mysql/mysql.sock #添加此行代码与最后三行到自己的my.cnf文件中
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
#最后三行
[client]
port=3306
socket=/var/lib/mysql/mysql.sock
重启mysql service mysql restart
登录成功,接下来修改密码以及连接方式
修改密码 set password for root@localhost = password('yj123456');
#这儿的root账户只允许本地连接,只要把localhost修改成%号就可以任意连接了
select host,user from user;
+-----------+---------------+
| host | user |
+-----------+---------------+
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+---------------+
3 rows in set (0.00 sec)
update user set host = ’%’ where user = ’root’;
ok,连接成功
到此就没什么问题了,补充一下,因为我是虚拟机,防火墙没开,所以就算修改了root账户的链接权限也无法链接成功,这个时候将3306的防火墙打开就ok了
firewall-cmd --zone=public --add-port=3306/tcp --permanent 打开防火墙
firewall-cmd --reload 重启防火墙