linux CentOs7安装 Mysql 8 及以上版本(详细)

网上在linux系统下安装mysql的文章实在是太多了,但是根据每个人的需求不同方法又不一样,还有很多给还给人造成误导,浪费半天敲命令结果还是启动不了。那么这篇文章就一步一步从头到尾把过程梳理一遍。
在这里我们采用本地下载将解压包传到服务器上的方法,当然使用wget也是一样的,只怕服务器传输速度太慢。先去mysql官网下载你所需要的mysql版本。这里我下载的是最新的8.0.19

下载地址:https://dev.mysql.com/downloads/mysql/
选择系统版本和系统位数下载就可以了
linux CentOs7安装 Mysql 8 及以上版本(详细)_第1张图片
然后将压缩包上传到服务器上,可以使用Xftp或者其他的工具,安装包很大包含了mysql的测试包,实体,和路由。
打开目录到local下

cd /usr/local

将文件直接上传到这个目录,然后进行解压

tar -xvf mysql-8.0.19-linux-glibc2.12-x86_64.tar

解压之后加上下载的一共会出现四个压缩包,解压下面这个
在这里插入图片描述

tar -xvf mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz

然后就解压出了一个文件夹 ,将他重命名为mysql

mv /usr/local/mysql-8.0.19-linux-glibc2.12-x86_64 /usr/local/mysql

接着 在MySQL根目录下新建一个文件夹data,用于存放数据

mkdir data

创建 mysql 用户组和 mysql 用户

groupadd mysql
useradd -g mysql mysql

改变 mysql 目录权限

chown -R mysql.mysql /usr/local/mysql/

接下来 初始化数据库,下面这条命令网上很多都是不对的,本人亲测能用
如果出现目录不存在,查看是否已经更改了目录权限!!!
需要在mysql根目录下执行!!!

bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

如果成功了,系统会给你一个临时的密码,务必要记录下来
在这里插入图片描述
接下来是mysql的配置

修改my.cnf文件

vim  /etc/my.cnf

在mysql目录下新建tmp文件夹 并赋予权限

mkdir tmp
chmod 777 /tmp

修改为以下内容

[mysqld]
    basedir = /usr/local/mysql   
    datadir = /usr/local/mysql/data
    socket = /usr/local/mysql/mysql.sock
    character-set-server=utf8
    port = 3306
   sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
 [client]
   socket = /usr/local/mysql/mysql.sock
   default-character-set=utf8

如不添加 [client] 开启服务输入密码后将出现下列错误
Can 't connect to local MySQL server through socket '/tmp/mysql.sock '(2)

加入开机自启项:
1.将/support-files/mysql.server 拷贝为/etc/init.d/mysql并设置运行权限,这样就可以使用service mysql命令启动/停止服务

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql

2.注册启动服务:

chkconfig --add mysql

查看是否添加成功

 chkconfig --list mysql
mysqld          0:off  1:off  2:on  3:on  4:on 5:on  6:off

启动mysql服务

# 启动
service mysql start;
# 查看启动状态
service mysql status;

登陆

# 登陆
mysql -uroot -p
# 输入"初始化数据库"操作时的"临时密码"

若出现未找到命令,做一个软连接到mysql的安装目录下:

ln -s /usr/local/mysql/bin/mysql /usr/bin

输入初始化服务时的临时密码;
修改密码

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';

设置允许远程连接

use mysql
update user set host ='%' where user='root';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
FLUSH PRIVILEGES;
到此为止,所有的安装步骤就结束了。如有疑问或发现错误,请留言或私信我。

有时候会遇到修改密码不生效的问题:解决办法如下↓

[root@izbp19kvzy03hpq35bq1jxz ~]# mysql -u root
ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)
这一段是拒绝user=root,host=localhost 的用户访问,需要数据密码

解决方案:1):设置mysql为无密码启动

(修改MySQL的登录设置:vi /etc/my.cnf (部分Linux安装了vim,其命令则改为vim /etc/my.cnf)

在[mysqld]的段中加上一句:skip-grant-tables保存并退出vi。)

2):重新启动mysqld,清空密码

重启mysql:service mysqld restart(这一步不能少,这是让my.cnf的修改生效)

进入mysql:mysql -u root

进入mysql后,切换数据库至mysql:use mysql;

清空密码:update user set authentication_string=’’ where user=‘root’;
3):退出mysql:exit; 并且 屏蔽skip-grant-tables:vi /etc/my.cnf,在skip-grant-tables前面添加#

4):重启mysql.

至此 mysql8.0 可以不需要密码登录了。登录成功之后重新设置密码和刷新权限 就可以远程访问了

设置密码:

‘root’@’%’ ‘root’等于user表里的user,’%’ 等于user表里的host

ALTER USER ‘root’@’%’ IDENTIFIED BY ‘新密码’ PASSWORD EXPIRE NEVER;

ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘新密码’;

让密码马上生效:FLUSH PRIVILEGES;

你可能感兴趣的:(数据库)