Linux 下安装 MySql 8

Linux 下安装 MySql 8

下载安装包

去到 MySql官网 https://www.mysql.com/downloads/ 下载对应的安装包

选择 MySQL Community Server,我这里下载的是 mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz

安装 mysql

1.上传压缩文件到服务器,并解压文件 tar -xvf mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz

*.tar.xz文件解压要分两步,但我上面直接解压也成功了

xz -d mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz
tar -xvf mysql-8.0.13-linux-glibc2.12-x86_64.tar

2.将解压后目录复制到安装目录/usr/local/下并更改文件名

mv -r mysql-8.0.13-linux-glibc2.12-x86_64 /usr/local/mysql

在目录下新建一个文件夹data,用于存放数据 mkdir /usr/local/mysql/data

3.添加mysql组和用户
groupadd mysql

useradd -r -g mysql mysql

把安装目录的权限给到 mysql组的mysql用户

chown -R mysql:mysql /usr/local/mysql

让mysql运行的时候使用一个独立的账号,如果mysql被黑了那么开始拿到的权限就是那个创建的账号而不是默认的root

我们在编译安装的时候创建一个mysql组和一个mysql用户,并把datadir和安装目录属主改为mysql,在MySQL启动的时候,单进程mysqld,该进程的属主就是mysql,这样就保证了mysql服务的独立性,即便mysql服务被黑掉,得到了mysql用户权限,也不会影响整个系统的安全

4.配置my.cnf文件

修改 /etc/my.cnf 文件

1
2
3
4
5
user=mysql
port=3306
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock

5.初始化mysql 配置

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

  • mysql5.7之前命令是:bin/mysql_install_db --user=mysql,之后的版本已经被mysqld --initialize替代,后面的配置在my.cnf配置了,也可以不带
  • 如果没有异常,会自动生成账号root和密码
  • 1
    2
    3
    2018-12-11T01:31:14.713646Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.13) initializing of server in progress as process 128876
    2018-12-11T01:31:19.886238Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: l;PS>rl4sl(B
    2018-12-11T01:31:21.653302Z 0 [System] [MY-013170] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.13) initializing of server has completed

启动服务、配置账号密码

开启服务

/usr/local/mysql/bin/mysqld_safe --user=mysql &

&是后台运行的意思,执行命令之后,终端会卡在一个位置,再按一下Enter即可

执行后报了个错

mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'.

很明显是因为路径文件不存在,且需要给mysql权限,之前在配置 /etc/my.cnf时,里面的配置为

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

创建这个路径,并授权给mysql,重新开启服务

mkdir /var/log/mariadb
touch /var/log/mariadb/mariadb.log
chown -R mysql:mysql /var/log/mariadb/

加入开机自启项

1.将{mysql}/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

  • 使用 service 启动:service mysql start

  • 使用 service 停止:service mysql stop

  • 使用 service 重启:service mysql restart

环境变量

配置全局环境变量,可以在其他位置使用 mysql

编辑 / etc/profile 文件

vim /etc/profile

在 profile 文件底部添加如下,保存后退出

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

设置环境变量立即生效

source /etc/profile

修改密码,创建用户

1.登录

mysql -uroot -p 密码使用初始化时生成的密码

2.修改密码

alter user 'root'@'localhost' identified with mysql_native_password by '***';

这里修改密码的时候加上 with mysql_native_password,mysql_native_password 8.0改变了 身份验证插件caching_sha2_password, 打开 my.ini (或者my.cofg) 可以看到变更了 5.7及其以前的方式mysql_native_password

3.创建用户,并授予权限

create user 'zou'@'%' identified with mysql_native_password by '***';

grant replication slave on *.* to 'zou'@'%';

flush privileges; //刷新

可以使用该账号远程连接

4.可以修改root用户可远程连接

update mysql.user set host='%' where user = 'root';