rpm -qa |grep -i mysql
# -i表示忽略大小写
mysql80-community-release-el7-7.noarch
mysql-community-common-8.0.32-1.el7.x86_64
mysql-community-client-8.0.32-1.el7.x86_64
mysql-community-icu-data-files-8.0.32-1.el7.x86_64
mysql-community-server-8.0.32-1.el7.x86_64
mysql-community-client-plugins-8.0.32-1.el7.x86_64
mysql-community-libs-8.0.32-1.el7.x86_64
mysql-community-libs-compat-8.0.32-1.el7.x86_64
yum remove mysql80-community-release-el7-7.noarch mysql-community-common-8.0.32-1.el7.x86_64 -y ...
或者
rpm -e --nodeps mysql80-community-release-el7-7.noarch mysql-community-common-8.0.32-1.el7.x86_64 ...
查看版本:mariadb
在CentOS中默认安装有MariaDB,是MySQL的一个分支,主要由开源社区维护。
CentOS 7及以上版本已经不再使用MySQL数据库,而是使用MariaDB数据库。
如果直接安装MySQL,会和MariaDB的文件冲突。
因此,需要先卸载自带的MariaDB,再安装MySQL。
rpm -qa | grep mariadb
rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64 # rpm -e --nodeps 文件名
安装依赖包libaio
安装mysql之前还需要检查下libaio.so.1是否存在;如果不存在,则需要先安装依赖包。
方法一:服务器有网络的情况下,可以通过yum安装
yum search libaio
yum install -y libaio
方法二:服务器没有网络,可以先在网络环境下载,然后传输到服务器上进行安装
①下载地址:
http://mirror.centos.org/centos/7/os/x86_64/Packages/libaio-0.3.109-13.el7.x86_64.rpm
②安装命令:
rpm -ivh libaio-0.3.107-10.el6.x86_64.rpm
find /-name mysql
/etc/selinux/targeted/active/modules/100/mysql
/var/lib/mysql
/var/lib/mysql/mysql
/usr/lib64/mysql
rm -rf /var/lib/mysql
rm -rf /var/lib/mysql/mysql
rm -rf /usr/lib64/mysql
find /etc -name my.cnf
rm -rf /etc/my.cnf
noarch是Architecture的缩写,说明这个包可以在各个不同的cpu上使用
这里我们选择__mysql80-community-release-el7-7.noarch.rpm
https://repo.mysql.com/
找到相应版本下载: mysql80-community-release-el7-7.noarch.rpm
wget https://repo.mysql.com/mysql80-community-release-el7-7.noarch.rpm 方案1
或者离线下载
https://www.cnblogs.com/jpxjx/p/16817724.html 方案2
yum install mysql80-community-release-el7-7.noarch.rpm -y ... #安装rpm包
或者
rpm -ivh mysql80-community-release-el7-7.noarch.rpm ... #安装rpm包
yum install -y mysql-community-server
# 会自动把客户端装上 方案1
或者
#参考redhat7 部署安装mysql8.0文档# #方案2
https://www.cnblogs.com/jpxjx/p/16817724.html
rpm -ivh mysql-community-common-8.0.31-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-plugins-8.0.31-1.el7.x86_64.rpm #(注意这个装完才能装下面一个,否则会报错)
rpm -ivh mysql-community-libs-8.0.31-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-8.0.31-1.el7.x86_64.rpm
rpm -ivh mysql-community-icu-data-files-8.0.31-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.31-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.31-1.el7.x86_64.rpm #(注意上面两个装完才能装这个)
lower_case_table_names = 1
#数据库默认字符集, 主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)
character-set-server = utf8mb4
#数据库字符集对应一些排序等规则,注意要和character-set-server对应
collation-server = utf8mb4_general_ci
#设置client连接mysql时的字符集,防止乱码
init_connect='SET NAMES utf8mb4'
#是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names = 1
systemctl start mysqld
systemclt status mysqld
grep "password" /var/log/mysqld.log
修改密码
mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Lqz12345?';
配置远程连接
USE mysql;
UPDATE mysql.user SET host = '%' WHERE user = 'root';
SELECT user, host, plugin, authentication_string FROM mysql.user;
FLUSH PRIVILEGES;
参考链接:[https://juejin.cn/post/7043605280541638669](https://juejin.cn/post/7043605280541638669)
#MySQL 8.0 创建用户及授权
参考链接:https://juejin.cn/post/7043605280541638669
#MySQL 8.0 创建用户及授权
安装MySQL之后,默认为不自启,需要手动开启
查看MySQL是否自启:systemctl is-enabled mysqld
开启自启 :systemctl enable mysqld
关闭自启 :systemctl disable mysqld
显示enable表示开机自启动,如果是disable,可以修改为开机自启动
systemctl enable mysqld.service # 开机自启动
systemctl disable mysqld.service # 禁用开机自启动
永久开放3306端口
firewall-cmd --permanent --zone=public --add-port=3306/tcp
#重启防火墙
systemctl restart firewalld
#检测设定是否生效
iptables -L -n | grep 3306
开放防火墙端口
开启root远程登录权限后,还无法直接被外界连接,因为MySQL的端口号3306在Linux中默认关闭的。
注意:使用阿里云等云服务器还需要在控制台中安全组策略打开端口,此处省略。
查询3306端口是否开启
firewall-cmd --query-port=3306/tcp
firewall-cmd --zone=public --add-port=3306/tcp --permanent
#开启3306
firewall-cmd --reload
#重新加载防火墙
链接参考:https://www.cnblogs.com/zh76412950/p/16692706.html
mysqladmin --version # 看到是8.0的版本
或
mysql -V # 看到是8.0的版本
glibc版本的Mysql,不是编译版的,是直接编译好的,相当于windows的绿色版
下载链接:https://dev.mysql.com/downloads/mysql/
检查:mariadb
rpm -qa |grep mariadb
rpm -e --nodeps mariadb-libs
检查mysql的rpm包,有的话全删除
rpm -qa |grep -i mysql
# -i表示忽略大小写
rpm -e --nodeps ...
# 依次挨个删除
删除mysql相关的配置【my.cnf】和目录【mysql】
find /-name mysql #全部删除
/var/lib/mysql
rm -rf /var/lib/mysql
cp my.cnf my.cnf_bak #变相备份删除
#创建一个用户组:mysql
groupadd mysql
#用户 (用户名/密码)【创建一个系统用户:mysql,指定用户组为mysql】
useradd -r -g mysql mysql
#检查用户组、用户是否存在
groups mysql
mkdir -p /mnt/mysql-8.0
#用于存放安装包
mkdir -p /usr/local/mysql-8.0
#安装目录
生产建议:软件目录和数据目录不要放在同一个地方,一般数据目录放在另一块磁盘上【数据磁盘】
chown -R mysql.mysql /usr/local/mysql-8.0
chmod -R 755 /usr/local/mysql-8.0
安装包下载路径: https://downloads.mysql.com/archives/community/
版本: 8.0.31 — os:Linux-Generic ----- osVersion:x86,64
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz
# wget + url命令进行下载
tar -Jxvf mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz -C /usr/local/mysql-8.0/
# 解压到数据目录
Tips:
如果下载速度很慢,或服务器没有网络,可以在Windows中下载好,然后将资源包通过Xftp传到服务器中,在进行后续操作,
使用md5sum mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz
命令检查资源包是否完整
.tar.gz后缀:tar -zxvf
文件名
.tar.xz后缀:tar -Jxvf
文件名
in-s介绍: https://www.jianshu.com/p/b80f5e62b6dc
ln -s /usr/local/mysql-8.0my.cnf /etc/my.cnf
把默认/etc/my.cnf重命名或删除
centos7默认会有一个/etc/my.cnf文件,为了不影响安装,可以直接删除或重命名
mv /etc/my.cnf /etc/my.cnf.bak 或 rm /etc/my.cnf
vim /etc/my.cnf
[mysql]
#默认字符集
default-character-set=utf8mb4
[client]
port = 3306
default-character-set=utf8mb4
[mysqld]
port = 3306
server-id = 3306
user = mysql
#数据存放目录
basedir=/usr/local/mysql-8.0
datadir=/usr/local/mysql-8.0/data
socket=/tmp/mysql.sock
#日志
log-error=/usr/local/mysql-8.0/data/mysql.log
pid-file=/usr/local/mysql-8.0/data/mysql.pid
#服务端使用的字符集默认为8比特编码
character-set-server=utf8mb4
lower_case_table_names=1
autocommit =1
[client]
port = 3306
socket =/tmp/mysql.sock
character-set-server=utf8mb4
vi/vim命令介绍:https://blog.csdn.net/blood_Z/article/details/125064927
vim /etc/profile
#环境变量
#添加以下内容
export PATH="$PATH:/usr/local/mysql-8.0/bin"
source /etc/profile
①创建软链接
ln -s /usr/local/mysql-8.0/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
#chkconfig --del mysqld(删除服务)
④查看服务列表
chkconfig --list
/etc/init.d/mysqld start
ps -ef | grep mysql
mysql -V
mysql Ver 8.0.31 for Linux on x86_64 (MySQL Community Server - GPL)
cd /usr/local/mysql-8.0/bin
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql-8.0/ --datadir=/usr/local/mysql-8.0/data/ #初始化无密码
或者
cd /usr/local/mysql-8.0/
./bin/mysqld --user=mysql --basedir=/usr/local/mysql-8.0 --datadir=/usr/local/mysql-8.0/data --initialize #初始化有密码
如果想设置初始为空密码,可以在–initialize后添加-insecure参数
初始化语句解释:
参数 | 描述 |
---|---|
defaults-file | 指定配置文件(要放在–initialize 前面) |
user | 指定用户 |
basedir | 指定安装目录 |
datadir | 指定初始化数据目录 |
intialize-insecure | 初始化无密码 |
#如果存在报错:
mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
报错原因: Linux系统中缺少libaio-devel 软件包
yum install -y libaio-devel
#安装libaio-devel
mysqld --initialize --user=mysql --basedir=/usr/local/mysql-8.0/ --datadir=/usr/local/mysql-8.0/data/
== 会打印出密码,记住,然后需要修改root密码后才能正常使用数据库==
初始的随机密码在/usr/local/mysql-8.0/data/mysql.log
中
mysql -uroot -p
#输入原始密码: i(/iJUN3EOey
#修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Lh@123456';
#刷新权限
FLUSH PRIVILEGES;
授权root用户允许远程登录
mysql>use mysql;
mysql>update user set user.Host='%'where user.User='root';
mysql>SELECT user, host, plugin, authentication_string FROM mysql.user;
mysql>flush privileges;
mysql>exit;
也可以创建新的可远程连接的用户
mysql>create user '用户名'@'主机' identified with mysql_native_password by '密码';
mysql>grant all privileges on *.* to '用户名'@'主机';
mysql>update user set user.Host='%'where user.User='用户名';
mysql>flush privileges;
centos7中:使用systemctl启动
上面安装好了,也设置好了,可以使用图形化工具远程一连接就报错了。
这是因为防火墙没有允许这个连接,我们还需要再设置一下,两种方式关闭防火墙,或者开放端口。
systemctl status firewalld
#查看防火墙状态
systemctl stop firewalld
#临时关闭防火墙
systemctl start firewalld
#开启防火墙
systemctl restart firewalld
#重启防火墙
systemctl disable firewalld
#关闭防火墙开机启动
systemctl enable firewalld
#开启防火墙开机启动
正式工作环境,为了信息安全建议先修改数据库默认端口,然后通过防火墙开放这个自定义端口再进行使用。
netstat -lntp
#查看系统端口占用情况
vim /usr/local/mysql-8.0/my.cnf
#修改配置文件my.cnf,将端口后修改为自定义端口号
说明:
Linux系统端口号范围为0-65535,不同的范围有不同意义 0 不使用 1–1023 系统保留,只能由root用户使用 1024—4999 由客户端程序自由分配 5000—65535 由服务器端程序自由分配查看端口号在/etc/services
。
1)开启防火墙
systemctl start firewalld
2)防火墙开启端口
firewall-cmd --zone=public --add-port=33066/tcp --permanent
如果需要关闭端口,可执行如下命令
firewall-cmd --zone=public --remove-port=33066/tcp --permanent
3)刷新防火墙配置
firewall-cmd --reload
4)查看已经开放的端口
firewall-cmd --list-ports
systemctl start mysqld
chkconfig --add mysqld # 把mysqld的脚本添加到systemctl的管理中
chkconfig --list # 查看可以通过systemctl管理的脚本
systemctl start mysqld
###至此,启动方式可以是
service mysqld start
或者
systemctl start mysqld
或者
/etc/init.d/mysqld start
或者
/usr/local/mysql-8.0/l/support-files/mysql.server start
在Navicat上再次进行测试连接,成功了
参考链接:CentOS7下MySQL数据库二进制部署方法
https://mp.weixin.qq.com/s/iFOB7Ox4ADKxsb_52_nnGw