Linux 下安装 MySQL

1、准备 mysql 安装包,可以进入 官网,自行选择需要的版本进行下载,我下载的是 mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz

image-20210730160417277

2、将本地的安装包上传到 linux 服务器上,我这里放在 /home/software 目录下


3、卸载系统自带的 mariadb,如果有的话

rpm -qa | grep mariadb

使用 yum -y remove 将出现的 mariadb 相关全部卸载

[root@xxx docker]# rpm -qa | grep mariadb
mariadb-libs-5.5.68-1.el7.x86_64

yum -y remove mariadb-libs-5.5.68-1.el7.x86_64

4、解压 mysql 安装包到 /usr/local,并将文件夹重命名为 mysql

tar -zxvf mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz -C /usr/local
mv /usr/local/mysql-8.0.11-linux-glibc2.12-x86_64 /usr/local/mysql

5、创建 mysql 用户和用户组

groupadd mysql
useradd -g mysql mysql

6、在 mysql 根目录下新建一个文件夹 data,用于存放数据

mkdir /usr/local/mysql/data

7、修改 mysql 目录的归属用户

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

8、准备 mysql 的配置文件

cd /etc
vim my.cnf

写⼊如下简化配置

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
[mysqld]
skip-name-resolve
# 设置3306端口
port = 3306
socket=/var/lib/mysql/mysql.sock
# 设置mysql的安装目录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M

9、创建 /var/lib/mysql 目录,并修改权限

mkdir /var/lib/mysql
chmod 777 /var/lib/mysql

10、正式开始安装 mysql,这里注意记录一下系统生成的密码

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

记录自己的密码,我这里是 b;(qQt*fe7zg

[Note] [MY-010454] [Server] A temporary password is generated for root@localhost: b;(qQt*fe7zg

image-20210731161932229

11、复制启动脚本到资源目录

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

12、修改 /etc/init.d/mysqld ,修改其 basedir 和 datadir 为实际对应目录

vim /etc/init.d/mysqld

修改内容

basedir=/usr/local/mysql
datadir=/usr/local/mysql/data

image-20210730164436459

13、设置 mysql 系统服务并开启自启动

# 增加 mysqld 服务控制脚本执⾏权限
chmod +x /etc/init.d/mysqld
# 将 mysqld 服务加⼊到系统服务
chkconfig --add mysqld
# 检查 mysqld 服务是否已经⽣效
chkconfig --list mysqld

image-20210730164734412

14、将 mysql 的 bin 目录加入 PATH 环境变量

vim /etc/profile

追加内容

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

15、刷新配置文件

source /etc/profile

16、启动和停止 mysqld

# 启动
service mysqld start
# 停止
service mysqld stop
# 查看 mysql 服务状态
systemctl status mysqld
# 重启 mysql 服务
systemctl restart mysqld

17、首次登陆 mysql,以 root 账户登录 mysql ,使用之前记录的密码进行登录

mysql -u root -p

image-20210731162336953

18、接下来修改 root 账户密码,

# 在mysql的命令⾏执⾏如下命令即可,密码可以设置成自己的密码
mysql>alter user user() identified by "123456";
mysql>flush privileges;

19、设置允许远程主机登录

mysql> use mysql;
mysql> update user set user.Host='%' where user.User='root';
mysql> flush privileges;

20、测试远程连接数据库,例如,可以使用 idea 中的数据库 测试连接

image-20210730170103163

21、另外测试使用 sqlyog 进行连接,发现报错。

Client does not support authentication protocol requested by server;consider upgrading MysQL client

原因是 mysql 8.0 的加密规则是 caching_sha2_password,而之前版本的加密规则是 mysql_native_password。

需要进行如下修改。

(1)进入 mysql 查看

[root@xxx mysql]# mysql -uroot -p
Enter password: 
Server version: 8.0.11 MySQL Community Server - GPL
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

# 切换数据库
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed

# 查看加密规则
mysql> select host,user,plugin from user;
| host      | user             | plugin                |
| %         | root             | caching_sha2_password |
| localhost | mysql.infoschema | mysql_native_password |
| localhost | mysql.session    | mysql_native_password |
| localhost | mysql.sys        | mysql_native_password |

(2)修改加密规则

# 密码设置为自己的密码
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
mysql> flush privileges;

(3)重新查看,发现已经修改成功

mysql> select host,user,plugin from user;
| host      | user             | plugin                |
| %         | root             | mysql_native_password |
| localhost | mysql.infoschema | mysql_native_password |
| localhost | mysql.session    | mysql_native_password |
| localhost | mysql.sys        | mysql_native_password |

(4)再次测试连接 sqlyog,发现连接成功。


22、mysql 权限设置语句

use mysql;

select user, host from user;

CREATE USER 'root'@'xxx.xxx.xxx.xxx' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'xxx.xxx.xxx.xxx' with grant option;

update user set host = 'xxx.xxx.%.%' where user = 'root' and host = 'xxx.xxx.xxx.xxx';
flush privileges;

posted @ 2021-08-29 22:24  distance66  阅读(52)  评论(0编辑  收藏  举报