这里记录centos8安装mysql8的过程

目录

下载mysql8的linux版本,我这里选64位

使用FTP工具将下载的压缩包上传到服务器centos指定目录(这里是放到 /home/mysql)

将压缩包解压到/usr/local/mysql8

首先我们先创建一个服务器账号和组,用于管理mysql的

为Mysql安装配置环境

关闭防火墙,防火墙状态为inactive时表示关闭成功

创建mysql数据目录并设置权限

配置my.cnf文件,在/etc目录下创建my.cnf文件并配置

初始化MySQL

启动MySQL服务

允许远程连接

更改远程访问数据库权限(%表示所有ip)

其他补充


下载mysql8的linux版本,我这里选64位

哪个版本的mysql最好 mysql哪个版本最稳定_服务器

使用FTP工具将下载的压缩包上传到服务器centos指定目录(这里是放到 /home/mysql)

哪个版本的mysql最好 mysql哪个版本最稳定_数据库_02

将压缩包解压到/usr/local/mysql8

命令:tar -xvf mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz  -C  /usr/local/mysql8

至此,mysql的基础目录为 /usr/local/mysql8/mysql8

给解压目录添加一个快捷链接

ln -s mysql-8.0.20-linux-glibc2.12-x86_64 mysql8

哪个版本的mysql最好 mysql哪个版本最稳定_哪个版本的mysql最好_03

第一个就是指向第二个的链接,虽然跟父目录同名,但是问题不大。

首先我们先创建一个服务器账号和组,用于管理mysql的

创建MySQL组

groupadd mysqlg

创建用户mysql1,并指定所属组和目录

useradd -r -d /home/mysql -g mysqlg  mysql1

修改mysql密码(xiaoming135)

passwd mysql1

提示:然后我们再把mysql相关目录和文件授权给我们创建的组mysqlg,这样只有root用户和所属的组用户才能访问和操作mysql的东西,当后续服务器需要提供给外部访问权限时,这种组和用户对目录权限的控制就显得很有必要了。

为Mysql安装配置环境

使用root用户编辑/etc/profile,将下面的内容添加到最下面,并执行source /etc/profile使配置生效

export PATH=$PATH:/usr/local/mysql/bin

哪个版本的mysql最好 mysql哪个版本最稳定_服务器_04

然后执行一下:source /etc/profile

关闭防火墙,防火墙状态为inactive时表示关闭成功

service firewalld stop

创建mysql数据目录并设置权限

mkdir /usr/local/mysql8/mysql8/data
chmod 750 /usr/local/mysql8/mysql8/data

哪个版本的mysql最好 mysql哪个版本最稳定_数据库_05

更改数据目录权限750含义参考


配置my.cnf文件,在/etc目录下创建my.cnf文件并配置

======================内容如下===============

[mysqld]
port=3306
basedir=/usr/local/mysql8/mysql8
datadir=/usr/local/mysql8/mysql8/data
log-error=/usr/local/mysql8/mysql8/data/error.log
socket=/tmp/mysql.sock
pid-file=/usr/local/mysql8/mysql8/data/mysql.pid
character-set-server = utf8
lower_case_table_names=1
innodb_log_file_size=1G
default-storage-engine=INNODB
default_authentication_plugin=mysql_native_password
[client]
port=3306
default-character-set=utf8

初始化MySQL

在mysql目录中,执行以下命令,然后稍等一会

bin/mysqld --initialize --user mysql

查看data/error.log日志初始化内容,最后一个则是初始化的密码 #M&Ft,Q=U1UW

哪个版本的mysql最好 mysql哪个版本最稳定_哪个版本的mysql最好_06

启动MySQL服务

执行support-files/mysql.server start启动mysql,启动成功后可查看到mysql的进程

哪个版本的mysql最好 mysql哪个版本最稳定_服务器_07

使用root用户登录mysql

mysql -u root -p

回车,然后输入初始化密码(上面日志中获取的那个)

修改mysql中root账号的密码

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

允许远程连接

先登录

mysql -u root -p
use mysql;
update user set host = '%' where user = 'root';
flush privileges;

哪个版本的mysql最好 mysql哪个版本最稳定_服务器_08

更改远程访问数据库权限(%表示所有ip)

例:所有的地址都可以使用root用户,密码为lxh远程访问所有的数据库

Mysql命令

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'lxh' WITH GRANT OPTION;

flush privileges;

例:IP为172.12.52.225的电脑可以使用lxh用户,密码为lxh远程访问数据库testdb的所有表

GRANT ALL PRIVILEGES ON testdb.* TO 'lxh'@'172.12.52.225'  IDENTIFIED BY 'lxh' WITH GRANT OPTION;

至此,已经可以使用客户端连接服务器的MySQL了。下图是使用Navicat工具测试连接

哪个版本的mysql最好 mysql哪个版本最稳定_哪个版本的mysql最好_09

PS:如果提示连接失败,可能是服务器防火墙拦截;可能是云服务器安全策略组未添加3306端口(如果是用的是阿里云服务器,那一定要设置)下图是我阿里服务器添加的安全策略组端口,已包含大多数常用端口。

【打开控制台,找到服务器实例,点进去》左边“本实例安全组”查看内网入方向的列表是否有该端口】

哪个版本的mysql最好 mysql哪个版本最稳定_数据库_10

其他补充

  • 用户授权模板语法
grant all privileges on 库名.表名 to '用户名'@'IP地址' identified by '密码' with grant option;

flush privileges;

说明:

     库名:要远程访问的数据库名称,所有的数据库使用“*”

     表名:要远程访问的数据库下的表的名称,所有的表使用“*”

     用户名:要赋给远程访问权限的用户名称

     IP地址:可以远程访问的电脑的IP地址,所有的地址使用“%”

     密码:要赋给远程访问权限的用户对应使用的密码

  • 创建一个mysql用户并授权
create user  'test'@'%' identified by 'test';

grant all on *.* to 'test'@'%';

flush privileges;

(注意这里的mysql用户跟linux中的不一样,两者分别用于登录数据库和服务器,权限也自然不能混为一谈)

  • 修改root密码为永不过期
ALTER USER 'root'@'%' IDENTIFIED BY '密码' PASSWORD EXPIRE NEVER;
  • root用户给其他用户授权失败

【报错Access denied; you need (at least one of) the SYSTEM_USER privilege(s) for this operation】

mySQL8版本中新增了一个system_user帐户类型,当我通过phpAdmin新增用户并赋予权限时

官方文档解释,原因是由于root用户没有SYSTEM_USER权限,把权限加入后即可解决:

grant system_user on *.* to 'root';
  • 撤销授权
REVOKE all on *.* FROM 'testuser'@'%';
  • 配置mysql开机自启动

首先将mysql.server 复制到/etc/init.d下面

cp support-files/mysql.server /etc/init.d/mysqld

通过chkconfig将mysql服务添加到开机启动的列表里面就可以了

chkconfig --add mysqld