Linux 通过RPM包安装 MySQL 5.7

Linux平台上推荐使用RPM包来安装Mysql,MySQL 提供了以下RPM包的下载地址:

  1. MySQL-MySQL服务器。你需要该选项,除非你只想连接运行在另一台机器上的MySQL服务器。
  2. MySQL-client - MySQL 客户端程序,用于连接并操作Mysql服务器。
  3. MySQL-devel - 库和包含文件,如果你想要编译其它MySQL客户端,例如Perl模块,则需要安装该RPM包。
  4. MySQL-shared - 该软件包包含某些语言和应用程序需要动态装载的共享库(libmysqlclient.so*),使用MySQL。
  5. MySQL-bench - MySQL数据库服务器的基准和性能测试工具。

安装过程中可能发生的错误在文章底部都有说明和解决步骤:

安装前,我们可以检测系统是否自带安装 MySQL:

rpm -qa | grep mysql

如果你系统有安装,那可以选择进行卸载:

// 普通删除模式
rpm -e mysql
// 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除
rpm -e --nodeps mysql

安装 MySQL:
接下来我们在 Centos7 系统下使用 yum 命令安装 MySQL,需要注意的是 CentOS 7 版本中 MySQL数据库已从默认的程序列表中移除,所以在安装前我们需要先去官网下载 Yum 资源包,下载地址:https://dev.mysql.com/downloads/repo/yum/
由于官网目前已经更新到MySQL8.0版本,所以这里我们直接通过wget下载:
如果需要安装MySQL8.0的同学可以参考播客:https://blog.csdn.net/u012946310/article/details/81880050
5.7和8.0安装没有区别,只是安装后配置有一点点区别。
下载地址:

wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

安装:

rpm -ivh mysql57-community-release-el7-9.noarch.rpm
yum install mysql-server

安装过程中会需要提示下载依赖,按y确认下载即可:
这里写图片描述
初始化MySQL:

mysqld --initialize

启动 MySQL:

service mysqld start

查看 MySQL 运行状态:

service mysqld status

验证 MySQL 安装:
在成功安装 MySQL 后,一些基础表会被初始化,在服务器启动后,你可以通过简单的测试来验证 MySQL 是否工作正常。
使用 mysqladmin 工具来获取服务器状态:

mysqladmin --version

linux上该命令将输出以下结果,该结果基于你的系统信息:

这里写图片描述
如果以上命令执行后未输入任何信息,说明你的Mysql未安装成功。
使用 MySQL Client(Mysql客户端) 执行简单的SQL命令
你可以在 MySQL Client(Mysql客户端) 使用 mysql 命令连接到Mysql服务器上,默认情况下Mysql服务器的密码为空,所以本实例不需要输入密码。
命令如下:

mysql -uroot -p

以上命令执行后会输出 mysql>提示符,这说明你已经成功连接到Mysql服务器上,你可以在 mysql> 提示符执行SQL命令:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.01 sec)

修改数据库默认字符集为utf8mb4:

登陆mysql查询当前字符集:

mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

编辑my.con配置文件

vim /etc/my.cnf

修改为以下内容:

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

[mysqld]
character-set-server=utf8mb4

#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

保存退出,重新启动mysql

service mysqld restart

然后在登陆mysql查询当前字符集:

mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8mb4                    |
| character_set_connection | utf8mb4                    |
| character_set_database   | utf8mb4                    |
| character_set_filesystem | binary                     |
| character_set_results    | utf8mb4                    |
| character_set_server     | utf8mb4                    |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

发现数据库的字符集已经被修改过来了 。

安装问题错误解决:

1,Job for mysqld.service failed because the control process exited with error code. See “systemctl status mysqld.service” and “journalctl -xe” for details.错误:
这里写图片描述
根据提示,分别使用service mysqld status和journalctl -xe查看服务启动失败的原因,发现是目录权限不足造成的,通过查看mysql目录发现目录下有的文件归属还是root,改成mysql即可
这里写图片描述

ll /var/lib/mysql |grep mysql
chown -R mysql:mysql /var/lib/mysql

2,ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: NO)
这里写图片描述
停止mysql服务:

service mysqld stop

修改配置文件无密码登录:

vi /etc/my.cnf

在最尾部加上:

skip-grant-tables

这里写图片描述
保存,启动mysql:

service mysqld start

登录mysql:

mysql -u root

查询mysql数据库:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

选中mysql数据库:

mysql> use mysql;
Database changed

首先更新root密码为空字符串:

update user set authentication_string='' where user='root';

退出,删除之前步骤加上的 “skip-grant-tables” 然后重启mysql:

// 1,退出
exit
// 2,修改,删除最后的skip-grant-tables
vim /etc/my.cnf
// 3,重启
service mysqld restart

然后在登陆Mysql:

mysql -uroot

使用ALTER修改root用户密码,方法为 ALTER user ‘root’@’localhost’ IDENTIFIED BY ‘新密码’。如下:

ALTER user 'root'@'localhost' IDENTIFIED BY '你的密码';

然后再用exit退出,再次登陆mysql就需要使用密码了,密码就是刚刚修改的密码

3,SQLyog连接时,报1130错误,是由于没有给远程连接的用户权限问题

这里写图片描述
解决1:更改 ‘mysql’数据库‘user’表‘host’项,从‘localhost’改成‘%’。

use mysql;
select host from user where user='root'; 
update user set host = '%' where user ='root';
flush privileges; 

解决2:直接授权

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码' WITH GRANT OPTION;

如果通过以上步骤还连接不上,请检查防火墙是否已经关闭。
CentOS6关闭防火墙使用以下命令:

// 临时关闭
service iptables stop
// 禁止开机启动
chkconfig iptables off

CentOS7关闭防火墙使用以下命令:

// 临时关闭
systemctl stop firewalld
// 禁止开机启动
systemctl disable firewalld
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值