Centos7安装mysql
一、卸载mariadb
1. 查看mariadb的相关包
rpm -qa | grep mariadb
2. 卸载mariadb
rpm -e --nodeps
二、完全卸载mysql
1. 查看mysql安装情况
rpm -qa |grep -i mysql
2. 若有则先卸载
yum remove mysql80-community-release-el7-1.noarch
3. 查看是否卸载完全
4. 查看mysql相关目录
whereis mysql
find / -name mysql
5. 删除相关目录
rm -rf
6. 删除/etc/my.cnf
rm -rf /etc/my.cnf
7. 删除/var/log/mysqld.log(如果不删除这个文件,会导致新安装的mysql无法生存新密码,导致无法登陆)
rm -rf /var/log/mysqld.log
三、安装mysql
1. 下载安装文件
官网下载地址:https://downloads.mysql.com/archives/community/
下载文件:mysql-8.0.16-linux-glibc2.12-x86_64.tar.xz
2. 文件解压缩
若是云服务器,把文件通过Xftp软件上传到服务器上,放于/usr/local/mysql文件夹中
第一步,使用xz -d 命令将xxx.tar.xz压缩包解压成xxx.tar,如下:
xz -d mysql-8.0.16-linux-glibc2.12-x86_64.tar.xz
第二步,使用tar -vxf命令将xxx.tar压缩包解压,如下:
tar -xvf mysql-8.0.16-linux-glibc2.12-x86_64.tar
3. 给包重命名为mysql
mv mysql-8.0.16-linux-glibc2.12-x86_64 /usr/local/mysql/mysql
4. 检查mysql组和用户是否存在,如无创建
创建mysql用户组:
groupadd mysql
useradd -g mysql mysql
5. 进入mysql目录并创建data目录;
cd /usr/local/mysql
mkdir data
6. 赋权限给相关目录
chmod -R 777 /usr/local/mysql/mysql
chmod -R 777 /usr/local/mysql/data
7. 将mysql目录的权限授给mysql用户和mysql组;
chown -R mysql:mysql /usr/local/mysql/mysql
8. 新建mysql配置文件 my.cnf
vi /etc/my.cnf
配置内容如下:
[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql/mysql # mysql安装目录
datadir=/usr/local/mysql/data # 数据存放目录
socket=/tmp/mysql.sock
log-error=/usr/local/mysql/data/mysql.err
pid-file=/usr/local/mysql/data/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
配置好文件,附文件权限:
- 特别注意,这个是所有用户都可读写,由于mysql的安全机制,这种权限可能会被忽视掉,导致配置文件my.cnf不生效
chmod -R 777 /etc/my.cnf
- 建议用这个,用户可读写,其他用户不可写.
chmod 644 /etc/my.cnf
9. 安装mysql
- 进入mysql 安装目录下的bin目录:
cd /usr/local/mysql/mysql/bin/
- 安装MySQL,并记住随机生成的密码,每次生成都不一样:
./mysqld --initialize --console
10. 启动mysql
- 进入/usr/local/mysql/mysql/support-files/目录
cd /usr/local/mysql/mysql/support-files/
-
启动mysql
./mysql.server start
可能会出现一下报错:
报错:Starting MySQL.Logging to '/usr/local/mysql/data/VM-0-16-centos.err'.
..... ERROR! The server quit without updating PID file (/usr/local/mysql/data/VM-0-16-centos.pid).
解决方法:
① 先查看报错文件
发现问题出现在/tmp/mysql.sock文件
② 检查文件mysql.sock是否在/tmp/目录下
检查该路径发现tmp路径属于root
③ 将该路径分配给mysql用户重启mysql,问题解决
chown -R mysql.mysql /tmp/
④ 其他情况:
若报错文件有如下报错,可能是因为没给文件赋权限
执行
chmod -R 777 /usr/local/mysql/data/
-
重新启动
11. 配置
- 配置环境变量
cp mysql.server /etc/init.d/mysqld
- 创建软连接(实现可直接命令行执行mysql)
ln -s /usr/local/mysql/mysql/bin/mysql /usr/bin
12.登录mysql
-
登录mysql,密码用上面安装mysql时的默认密码
mysql -uroot -p
-
修改默认密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'lcd123456';
-
修改成远程登录用户
update user set host='%' where user = 'root';
-
授权
grant all privileges on *.* to 'root'@'%';
-
刷新权限
flush privileges
-
使用native校验登录(可以使用Navicat for mysql等工具登录)
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'lcd123456';
13.防火墙设置
-
查看防火墙状态
firewall-cmd --state
若没有,则开启
systemctl start firewalld.service
-
查看监听的端口
firewall-cmd --list-port
-
添加3306端口监听
firewall-cmd --zone=public --add-port=3306/tcp --permanent
-
刷新防火墙设置
firewall-cmd --reload
至此,完成安装。
14. 加入开机启动
chkconfig --add mysqld
chkconfig mysqld on
四、执行 sql 文件
命令行下执行 sql 文件有两种方法
1. 第一种方法(未连接数据库)
不推荐这样使用 因为在密码带有特殊字符时会报错
mysql -h localhost -u username -ppassword < filepath #filepath 为绝对路径
2.第二种方法(已连接数据库)
这里的 yourDatabase 为你的数据库名 filepath 为 sql 文件的绝对路径
-
创建数据库
CREATE DATABASE IF NOT EXISTS yourDatabaseName DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;
-
执行sql文件
use yourDatabase; source filepath;
3. 第三种方法-连接Navicat
至此,结束!
参考文章: