Linux(Centos7)下rpm方式安装MySQL

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux(Centos7)下rpm方式安装MySQL相关的知识,希望对你有一定的参考价值。


1. 卸载已有mysql

1.1. 查看是否已安装mysql

rpm -qa |grep -i mysql

Linux(Centos7)下rpm方式安装MySQL_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_linux_02
如果提示错误: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_03
删除对应的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_其他_04


2. 安装MySQL5.7

上传以下mysql安装文件:


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


在安装过程中:

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

Linux(Centos7)下rpm方式安装MySQL_java_05
【解决方法】:卸载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_其他_06

安装numactl即可:

# yum -y install numactl

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

Linux(Centos7)下rpm方式安装MySQL_java_07

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

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

Linux(Centos7)下rpm方式安装MySQL_java_08
【解决方法】:强制安装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_其他_09

安装完成!


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

(3)然后启动mysql服务:

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

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


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

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

Linux(Centos7)下rpm方式安装MySQL_MySQL_11


(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_其他_12

【解决方法】(登录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_13
修改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_java_14


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_MySQL_15


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_mysql_16


6.2. 开启防火墙端口3306

centos7防火墙相关操作:

(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端口)

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


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

Linux(Centos7)下rpm方式安装MySQL_MySQL_17

到此,安装完成!!!


附:常见连接报错

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


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


以上是关于Linux(Centos7)下rpm方式安装MySQL的主要内容,如果未能解决你的问题,请参考以下文章

CentOS7下rpm命令详解,rpm包的安装与卸载

centos7 RPM方式安装MySQL5.7

Linux下mysql 安装

centos7下安装MySQL

如何卸载linux下docker

CentOS 7安装 MySQL 8(RPM+Tar)+首次配置