Linux(Centos7)下rpm方式安装MySQL

时间:2022-12-05 00:45:54

1. 卸载已有MySQL

1.1. 查看是否已安装mysql

rpm -qa |grep -i mysql

Linux(Centos7)下rpm方式安装MySQL
如果系统已安装,请卸载删除。


1.2. 删除MySQL

删除命令:rpm -e --nodeps 包名
rpm -ev mysql-libs-5.1.73-8.el6_8.x86_64
如果提示依赖包错误,则使用以下命令尝试(个人建议):

rpm -ev mysql-libs-5.1.73-8.el6_8.x86_64 --nodeps

Linux(Centos7)下rpm方式安装MySQL
如果提示错误:error: %preun(xxxxxx) scriptlet failed, exit status 1
则用以下命令尝试:
rpm -e --noscripts mysql-libs-5.1.73-8.el6_8.x86_64


1.3. 删除残留mysql的文件和库

查找删除残留mysql的文件和库:

find / -name mysql

Linux(Centos7)下rpm方式安装MySQL
删除对应的mysql目录:

rm -rf  /usr/share/mysql
rm –rf  /usr/lib64/mysql
rm -rf  /var/lock/subsys/mysql

1.4. 手工删除/etc/my.cnf

rm -rf /etc/my.cnf

1.5. 再次检查是否已安装mysql,如果有,请重复上面步骤删除之。

find / -name mysql
rpm -qa|grep -i mysql

Linux(Centos7)下rpm方式安装MySQL


2. 安装MySQL5.7

上传以下mysql安装文件:

mysql-community-client-5.7.27-1.el6.x86_64.rpm
mysql-community-server-5.7.27-1.el6.x86_64.rpm
mysql-community-common-5.7.27-1.el6.x86_64.rpm
mysql-community-libs-5.7.27-1.el6.x86_64.rpm


由于存在各种依赖关系,安装顺序为:

1)rpm -ivh mysql-community-common-5.7.27-1.el6.x86_64.rpm
2)rpm -ivh mysql-community-libs-5.7.27-1.el6.x86_64.rpm
3)rpm -ivh mysql-community-client-5.7.27-1.el6.x86_64.rpm
4)rpm -ivh mysql-community-server-5.7.27-1.el6.x86_64.rpm


在安装过程中:

(1)报错1: 安装common、libs时报:mariadb-libs与所安装软件冲突

原因: 由于centos7默认安装mysql分支数据库mariadb,出现冲突。

Linux(Centos7)下rpm方式安装MySQL
【解决方法】:卸载mariadb-libs

[root@localhost java]# rpm -qa |grep -i mariadb
mariadb-libs-5.5.65-1.el7.x86_64
[root@localhost java]# 
[root@localhost java]# rpm -ev mariadb-libs-5.5.65-1.el7.x86_64 --nodeps
软件包准备中...
mariadb-libs-1:5.5.65-1.el7.x86_64
[root@localhost java]# 

(2)报错2: 安装server时报:需要安装libnuma.so.1()(64bit)
Linux(Centos7)下rpm方式安装MySQL

安装numactl即可:

# yum -y install numactl

(3)报错3: 安装server时报:需要安装libsasl2.so.2()(64bit)

Linux(Centos7)下rpm方式安装MySQL

注: libsasl2.so.2()(64bit) 的包全名为:cyrus-sasl-lib-2.1.23-15.el6_6.2.x86_64.rpm(这里版本请忽略)

yum方式安装cyrus-sasl-lib,发现其已经安装:

[root@localhost java]# yum install -y cyrus-sasl-lib

Linux(Centos7)下rpm方式安装MySQL
【解决方法】:强制安装server(--nodeps --force):

[root@localhost java]# rpm -ivh mysql-community-server-5.7.27-1.el6.x86_64.rpm --nodeps --force

Linux(Centos7)下rpm方式安装MySQL

安装完成!


3. 启动MySQL
#查看mysql状态
service mysqld status
# 启动mysql
service mysqld start
# 停止mysql
service mysqld stop
# 重启mysql
service mysqld restart

(1)启动MySQL服务:

[root@localhost java]# service mysqld start
Starting mysqld (via systemctl):                           [  确定  ]
[root@localhost java]# 

(2)查看MySQL进程(发现启动成功):

[root@localhost java]# ps -ef | grep mysql
root      47240      1  0 22:18 ?        00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql

mysql     47434  47240  0 22:18 ?        00:00:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock

root      47557  39026  0 22:26 pts/1    00:00:00 grep --color=auto mysql

[root@localhost java]# 

4. 修改MySQL密码

(1)关闭MySQL服务:

[root@localhost java]# service mysqld stop
Stopping mysqld (via systemctl):                           [  确定  ]
[root@localhost java]# 

(2)在配置文件/etc/my.cnf任意行(新一行)中加入指令:skip-grant-tables

[root@localhost java]# vi /etc/my.cnf

注: my.cnf文件目录可通过“find / -name my.cnf”命令查找。


(3)然后启动mysql服务:

[root@localhost java]# service mysqld start
Starting mysqld (via systemctl):                           [  确定  ]
[root@localhost java]# 

(4)登录MySQL,不需要输入密码直接回车即可
Linux(Centos7)下rpm方式安装MySQL


(5)修改密码,并刷新权限

update mysql.user set authentication_string=password('1234') where user='root';
flush privileges; 

Linux(Centos7)下rpm方式安装MySQL


(6)最后,注释掉配置文件/etc/my.cnf中添加的skip-grant-tables

[root@localhost java]# vi /etc/my.cnf

(7)重启mysql服务:

[root@localhost java]# service mysqld restart
Stopping mysqld (via systemctl):                           [  确定  ]
[root@localhost java]# 

(8)登录后正常操作MySQL会报错
Linux(Centos7)下rpm方式安装MySQL

【解决方法】(登录mysql后执行):

① MySQL版本5.7以下(不含5.7)版本:

SET PASSWORD = PASSWORD('1234'); 
flush privileges; 

② MySQL版本5.7+(含5.7)版本(常用):

ALTER USER USER() IDENTIFIED BY '1234';
flush privileges; 

(9)如果继续报错:
Linux(Centos7)下rpm方式安装MySQL
修改MySQL密码安全策略:

mysql> set global validate_password_policy=LOW;
mysql> set global validate_password_length=4;

再次修改密码(这里使用的mysql5.7,版本5.7以下见上面教程):

ALTER USER USER() IDENTIFIED BY '1234';
flush privileges; 

Linux(Centos7)下rpm方式安装MySQL


5. 修改MySQL字符集等配置(初级配置)

(1)编辑配置信息

[root@localhost java]# vi /etc/my.cnf

内容:

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8 
[mysqld]
#设置3306端口
port = 3306 
# 主服务器唯一ID(一般取IP最后一段) 
server-id=1
# 设置mysql的安装目录
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

# 允许最大连接数
max_connections=1000
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB

# 分组group_cocat函数最大长度,默认为1024
group_concat_max_len=102400
# 最大数据包大小(通信缓冲区的最大长度)
max_allowed_packet=102400
# 最大允许的数据包大小(执行大数据插入等操作需要配置)
max_allowed_packet=10000M

# 设置时区(Idea连接mysql需要设置)
default-time-zone='+08:00'

# 取消mysql表名大小写限制(0:区分,1:不区分)
lower_case_table_names=1

# 必须的配置(支持group by)
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

# 跳过校验权限(需配置在[mysqld_safe]之前)
# skip-grant-tables

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

针对如上设置的pid-file文件夹路径:建议自行创建,并授权:

# mkdir -p /var/run/mysqld
# chown mysql.mysql /var/run/mysqld/

(2)保存后,重启mysql服务:

[root@localhost java]# service mysqld restart
Restarting mysqld (via systemctl):                         [  确定  ]
[root@localhost java]# 

(3)查看mysql字符集

mysql> show variables like '%char%';

Linux(Centos7)下rpm方式安装MySQL


6. 开启远程访问权限

6.1. 开启远程访问权限(需root用户授权

① 执行授权语句,报错:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '1234' WITH GRANT OPTION;
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

修改MySQL密码安全策略:

mysql> set global validate_password_policy=LOW;
mysql> set global validate_password_length=4;

再次执行授权语句:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '1234' WITH GRANT OPTION;

② 刷新权限

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> 

权限变化如下图:
Linux(Centos7)下rpm方式安装MySQL

辅助语句(一般不用):
use mysql;
update user set host = ‘%’ where user = ‘root’;
select user,host from mysql.user;


6.2. 开启防火墙端口3306

centos7防火墙相关操作:

启动: systemctl start firewalld
查看状态: systemctl status firewalld
停止: systemctl disable firewalld
禁用: systemctl stop firewalld

(1)开放3306端口

[root@localhost java]# firewall-cmd --zone=public --add-port=3306/tcp --permanent

(2)重新加载防火墙配置

[root@localhost java]# firewall-cmd --reload
success
[root@localhost java]#

(3)查看已开放的端口

[root@localhost java]# firewall-cmd --list-port
3306/tcp
[root@localhost java]# 

【附】其他相关命令:

① 关闭指定端口(如:关闭3306端口)

firewall-cmd --zone=public --remove-port=3306/tcp --permanent

② 查看端口状态(如:查看3306端口)

firewall-cmd --zone=public --query-port=3306/tcp


7. 使用Navicat Premium远程连接MySQL(附:常见报错)

注: 这里使用Navicat Premium软件远程连接测试。

Linux(Centos7)下rpm方式安装MySQL

到此,安装完成!!!


附:常见连接报错

(1) 报错一(10060): 防火墙端口未开启
Linux(Centos7)下rpm方式安装MySQL


(2)报错二(1045): 远程授权密码与实际连接密码不相符
Linux(Centos7)下rpm方式安装MySQL