`
在这里插入代码片`
分类专栏: 安装 文章标签: linux mysql
安装
```java
CentOS7安装MySQL(8.0版本)
写在最前:自己搭来用的数据库,都用很久了,最近发现从windows版本同步过来的表结构和数据查询出问题了,查资料发现windows默认不区分表名大小写而linux默认敏感,卧了槽了,一查说配置文件里加lower-case-table-names=1就行了,结果加上服务就启不动了,找各种资料都是这个方法,很坑,然后看官方文档说只能在初始化配置,遂卸载重装,安装方法如下(若不需要配置对大小写敏感与否删掉lower-case-table-names=1即可):
一、 清理环境
1.查看系统是否安装了mysql数据库
rpm -qa | grep mysql
2.查询到已安装的MySQL后,执行以下命令依次卸载(若没有查询到,则说明没有安装Mysql库,可直接跳过此步)
yum remove mysql-xxx-xxx
3.删除MySQL的配置文件(MySQL卸载不会自动删除配置文件,需自行清理)
1)首先使用如下命令查找出所用的配置文件
find / -name mysql
2)根据需求使用以下命令 依次 对配置文件进行删除
rm -rf /var/lib/mysql
4.删除MariaDB的文件
由于 在CentOS中默认安装有MariaDB,所以如果我们不删除MariaDB文件的话,安装MySQL时可能会发生冲突。所以要删除MariaDB文件
1)使用rpm 命令查找出要删除的mariadb文件
rpm -qa | grep mariadb
2)可能出现结果:mariadb-libs-5.5.56-2.el7.x86_64,删除查询到的程序:
yum -y remove mariadb-libs.x86_64
二、安装MySQL
1.切换到/user/local目录下
[root@localhost ~]# cd /usr/local/
2.下载MySQL
[root@localhost ~]# wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz
3.解压MySQL
[root@localhost ~]# tar xvJf mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz
4.重新命名文件夹为mysql
[root@localhost ~]# mv mysql-8.0.21-linux-glibc2.12-x86_64 mysql
5.创建data文件夹
[root@localhost ~]# cd /usr/local/mysql
[root@localhost ~]# mkdir data
6.创建用户组以及用户和密码
[root@localhost ~]# groupadd mysql
[root@localhost ~]# useradd -g mysql mysql
7.授权用户
[root@localhost ~]# chown -R mysql.mysql /usr/local/mysql
8.切换到bin目录下
[root@localhost ~]# cd /usr/local/mysql/bin
9.初始化基础信息(路径根据自己的来)
注:这里必须先初始化不区分大小写(不需要可以去掉--lower-case-table-names=1),后面在配置文件中也要加,只要启动一次了再加就没用了
[root@localhost ~]# ./mysqld --user=mysql --lower-case-table-names=1 --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/ --initialize
出现以下信息便说明初始化成功:
得到临时密码,保存下来,后面会用到。
10.编辑my.cnf文件
[root@localhost ~]# vim /etc/my.cnf
更改为以下内容:
注:这里有个巨坑,如果需要lower-case-table-names=1这个不区分大小写的配置一开始就得加在这里,后面第一次启动后在my.conf里面配无法启动
[client]
default-character-set=utf8
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3306
socket=/tmp/mysql.sock
character-set-server=utf8
collation-server=utf8_general_ci
lower-case-table-names=1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
注意:此处my.cnf如果文件不存在(存在则不需要复制),需要复制 /mysql/support-files/my-default.cnf 文件。如果my-default.cnf文件也不存在,则创建一个。
[root@localhost ~]# cd /usr/local/mysql/support-files
[root@localhost ~]# ls #查看my-default.cnf是否存在
[root@localhost ~]# touch my-default.cnf #如果存在则不需要执行这一步
[root@localhost ~]# chmod 777 my-default.cnf #如果存在则不需要执行这一步
[root@localhost ~]# cp /etc/my.cnf my-default.cnf #复制配置文件
11.添加mysqld服务到系统
[root@localhost bin]# cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
12.授权以及添加服务
[root@localhost bin]# chmod +x /etc/init.d/mysql
[root@localhost bin]# chkconfig --add mysql
13.启动mysql
[root@localhost bin]# service mysql start
14.查看启动状态
[root@localhost bin]# service mysql status
15.将mysql命令添加到服务
[root@localhost bin]# ln -s /usr/local/mysql/bin/mysql /usr/bin
16.登录mysql mysql -uroot -p 密码使用之前随机生成的密码
注:这里有可能会报如下的异常信息,只需执行这个指令再往下执行即可sudo ln -s /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5
[root@localhost bin]# mysql -uroot -p
17.修改root密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456'; #其中123456是新的密码自己设置
18.执行 flush privileges; 使密码生效
mysql> flush privileges;
19.选择mysql数据库修改远程连接并生效
mysql> use mysql;
mysql> update user set host='%' where user='root';
mysql> flush privileges;
mysql> exit;
# 完成