Centos以rpm方式进行安装MySql

时间:2021-06-28 07:09:34

安装过很多次mysql了,却没好好总结过,每次安装完了都忘,下次还要重新Google,这次总结下,自己以后也有的查。

1.安装采用的的rpm包的方式,安装前要先看系统内是否安装了旧版本的MySql和mariadb数据库,如果安装了要先卸载掉。

具体命令为:rpm -qa|grep mariadb 和 rpm -qa|grep mysql,搜索mysql的时候会区分大小写,所以可以改变下MySQL的大小写,多搜索几次。如果安装了,必须使用rpm -e 卸载掉,例如:

[root@5201351 ~]# rpm -qa|grep mariadb
mariadb-libs-5.5.41-2.el7_0.x86_64
[root@5201351 ~]# rpm -e mariadb-libs-5.5.41-2.el7_0.x86_64 --nodeps

然后用:find / -name mysql 命令搜索一下看是不是还有残留文件,如果有可以直接删掉。

2.下载新版本的安装包,5.7的网址为:http://dev.mysql.com/downloads/file/?id=462161,MySQL8的下载链接:https://dev.mysql.com/downloads/file/?id=476386,我使用的rpm的安装包,所以下载的是rpm的完整依赖压缩包,扩展名为tar,

mysql8的下载链接:https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.11-1.el7.x86_64.rpm-bundle.tar

下载完成后解压:tar -xf mysql-5.7.12-1.el7.x86_64.rpm-bundle.tar,这个地方注意,解压参数不能添加zv 不然会报错,这个好像和mysql官方的tar的压缩方式有关。

解压之后会释放很多个rpm的安装包,其中有四个是必须安装的,而且有依赖关系。

Centos以rpm方式进行安装MySql

安装之前先检查是否安装了libaio和perl,如果没安装的话,要先把这个装上,不然安装依赖的时候不会报错,安装最后service的时候会报错。

具体的错误信息为:

Centos以rpm方式进行安装MySql

mysql最小模式下,必须安装的是:

mysql-community-common-5.7.9-1.el7.x86_64.rpm

mysql-community-libs-5.7.9-1.el7.x86_64.rpm             --(依赖于common)
mysql-community-client-5.7.9-1.el7.x86_64.rpm          --(依赖于libs)
mysql-community-server-5.7.9-1.el7.x86_64.rpm         --(依赖于client、common)

在安装的时候第一次没事,后期换过一次系统,再次安装的时候出现了HAS1校验错误的问题,安装更新了好多东西还是没解决,最后使用:-ivh参数忽略警告直接安装。

如果安装过程中出现以下错误:Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY,安装时需要指定参数:--force --nodeps

安装命令比如:rpm -ivh mysql-community-client-8.0.11-1.el7.x86_64.rpm --force --nodeps

如果后期要用python之类的语言连接mysql,那再把:mysql-community-devel-5.7.12-1.el7.x86_64.rpm装上,不然后期还得安装,安装完成之后,这个安装包最好保留,因为后期指不定还安装什么东西呢。

3.以上安装完成之后,mysql已经安装完成了,接下来生成mysql的默认密码,

命令:mysql_install_db --datadir=/var/lib/mysql   //必须指定datadir,执行后会生成~/.mysql_secret密码文件,注:这是个以点号开头的文件,默认是隐藏的,使用:ls -la就能看到了。

或者执行:mysqld --initialize                         //新版的推荐此方法,执行生会在/var/log/mysqld.log生成随机密码

这两个都可以生成初始密码,但注意位置不同,上面的是在root目录下.mysql_secret文件中,下面的是在日志文件中。

4.修改权限组:chown mysql:mysql /var/lib/mysql -R

  启动时出现:mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory

  需要安装:yum -y install numactl.x86_64

5.启动MySQL服务:systemctl start mysqld.service。

6.根据3中使用的方式不同,查看生成随机密码,然后登陆就好了,命令:mysql -u root -p 随机密码

7.因为是使用随机密码登陆的,最开始要先修改密码,其他的命令不能执行,否则会返回错误:You must reset your password using ALTER USERstatement before executing this statemen。

修改密码命令:

  1.SET PASSWORD = PASSWORD('123456');

  2. ALTER USER `root`@`localhost` PASSWORD EXPIRE NEVER;

   mysql8: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';

  3. FLUSH PRIVILEGES ;

然后退出重新登陆,就可以正常操作了。

如果想开启远程登录,先要检查本地的3306端口是否开放了,具体命令为:

  测试端口是否打开:firewall-cmd --query-port=3306/tcp

  打开指定端口:firewall-cmd --add-port=3306/tcp

  允许远程登录的操作为:

  mysql>use mysql;

  mysql>update user set host = '%' where user = 'root';

  mysql>flush privileges;

执行完这些操作,就可以用sqlyog等工具远程登录了。

这样安装完毕之后配置文件在:/etc/my.cnf。注:linux下配置文件名字为my.cng,window下叫my.ini。

如果想配置成本地面密码登录,可以修改配置文件,添加如下部分:

[client]
host=localhost  #限定的IP
user='root'  #用户名
password='passwd'  #密码
socket=/data/mysql/mysql.sock #此部分可以不添加,如果写错了,可能会导致客户端连接服务器的时候出现mysql.sock找不到的错误。

扩展

1:针对单个IP做IP白名单(mysql8),每个IP要执行一次,不能一次性允许多个IP;

CREATE USER 'writer'@'114.55.15.20' IDENTIFIED BY 'BZRiIrC5hjP';
grant all privileges on data_warehouse.* to writer@'114.55.15.20' ;

以上是以rpm的方式进行安装。

安装过程中参考了很多人的博客,因为有的随手关闭了,不能一一在此写明,在此对各位表示感谢。