Linux中安装mysql

Linux中安装mysql

Linux上安装软件常见的几种方式:

  • 源码编译
  • 压缩包解压(一般为tar.gz)
  • 编译好的安装包(RPM、DPKG等)
  • 在线安装(YUM、APT等)

以上几种方式便捷性依次增加,但通用性依次下降,比如直接下载压缩包进行解压,这种方式一般需要自己做一些额外的配置工作,但只要掌握了方法,各个平台基本都适用,YUM虽然简单,但是平台受限,网络受限,必要的时候还需要增加一些特定YUM源。

几种安装方式最好都能掌握,原则上能用简单的就用简单的:YUM>RPM>tar.gz>源码

为了更快的下载安装,需要更换成国内的yum源。

备份并更换/etc/yum.repos.d/CentOS-Linux-BaseOS.repo文件

1、备份CentOS-Linux-BaseOS.repo文件

mv /etc/yum.repos.d/CentOS-Linux-BaseOS.repo /etc/yum.repos.d/CentOS-Linux-BaseOS.repo.backup.20220408

2、更换成国内的yum源,命令:wget -O /etc/yum.repos.d/CentOS-Linux-BaseOS.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo

3、把/etc/yum.repos.d/CentOS-Linux-BaseOS.repo文件中的[AppStream]部分复制到/etc/yum.repos.d/CentOS-Linux-AppStream.repo文件中,将原来的注释掉。

4、更新缓存:yum clean all 和 yum makecache 命令

1、使用yum安装

1、查看是否已安装了mysql,无输出说明没有安装。

rpm -qa | grep mysql

2、查看系统版本,下载对应版本的mysql

cat /etc/redhat-release

3、打开mysql官网,找到对应版本的mysql进行下载

或者复制rpm包名称,例如上图中的mysql80-community-release-el8-4.noarch.rpm,通过以下命令下载:wget https://dev.mysql.com/get/mysql80-community-release-el8-4.noarch.rpm

4、下载完mysql源之后,安装mysql源

rpm -Uvh mysql80-community-release-el8-4.noarch.rpm 或者

yum -y install mysql80-community-release-el8-4.noarch.rpm

检查是否安装成功:执行成功后会在/etc/yum.repos.d/目录下生成两个repo文件mysql-community.repo及 mysql-community-source.repo

查看mysql相关资源:yum repolist enabled | grep "mysql.*-community.*"

5、选择mysql版本

使用MySQL Yum Repository安装MySQL,默认会选择当前最新的稳定版本。

使用命令:yum repolist all | grep mysql,查看当前yum repolist的所有版本。

切换版本:

[root@localhost ~] yum-config-manager --disable mysql80-community

[root@localhost ~] yum-config-manager --enable mysql57-community

6、安装mysql,如果没有切换版本,则默认安装最新版本的mysql

[root@localhost ~]# yum install mysql-community-server -y

安装报错:错误:没有任何匹配: mysql-community-server

解决方法:
先执行:yum module disable mysql
再执行:yum -y install mysql-community-server

该命令会安装MySQL服务器 (mysql-community-server) 及其所需的依赖、相关组件,包括mysql-community-client、mysql-community-common、mysql-community-libs等,安装时间会比较长。

7、设置开机自启动

[root@node10 ~]# systemctl enable mysqld

[root@node10 ~]# systemctl daemon-reload

8、启动mysql并查看运行状态

[root@node10 ~]# systemctl start mysqld.service

[root@node10 ~]# systemctl status mysqld.service

停止和重启命令:

停止:systemctl stop mysqld.service ,重启:systemctl restart mysqld.service

9、修改密码

MySQL第一次启动后会创建超级管理员账号root@localhost,初始密码存储在日志文件/var/log/mysqld.log中。

命令:grep 'temporary password' /var/log/mysqld.log

登录mysql之后修改密码:

mysql -uroot -p  #按回车之后输入日志文件中的默认密码

然后通过alter user 'root'@'localhost' identified by '新密码'; 命令修改密码。

Mysql默认的密码策略要求:密码必须符合指定的长度,默认是8,并且必须含有数字、小写大写字母、特殊字符。将密码修改的复杂一点。

如果想设定较为简单的密码,需要修改validate_password_policy和validate_password _length的值,降低密码的配置级别。

mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)
mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)

10、设置编码

查看mysql默认编码格式:

mysql> SHOW VARIABLES LIKE 'character%';

编辑/etc/my.cnf文件,vim /etc/my.cnf,[mysqld]节点增加以下代码:

[mysqld]

character_set_server=utf8

init-connect='SET NAMES utf8'

11、授权,允许远程登录

mysql > grant all on *.* to root@'%' identified by '数据库密码';

mysql > flush privileges;

12、使用客户端工具连接mysql

提示:java.net.ConnectException: Connection timed out: connect.

解决方法:

1、检查服务器的防火墙mysql端口3306是否开放

开启3306端口,命令:firewall-cmd --zone=public --add-port=3306/tcp --permanent

并重启防火墙,命令:firewall-cmd --reload

重试连接之后,报错:com.mysql.cj.exceptions.CJException: null, message from server: "Host '192.168.133.1' is not allowed to connect to this MySQL server"。说明不允许远程登录。

2、设置允许远程登录

在mysql中依次执行下面三条SQL语句:

use mysql;

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

FLUSH PRIVILEGES;

再次尝试连接,即可连接成功。

【拓展:修改密码策略和删除mysql】

【修改密码策略】

使用grep 'temporary password' /var/log/mysqld.log命令找到默认密码之后,使用默认密码登录。使用 alter user 'root'@'localhost' identified by 'root1234'; 修改密码报错。

在mysql中输入set global validate_password_policy=0;提示未知的系统变量,原因是MySQL密码策略validate_password默认状态为NOT activated

使用install plugin validate_password soname 'validate_password.so';命令激活密码策略,提示必须先重置密码。那就先修改一个复杂的密码,等修改了密码策略之后,再修改成简单的密码。

通过select plugin_name, plugin_status from information_schema.plugins where plugin_name like 'validate%';查看密码策略的状态。

validate_password_policy的取值以下三种,默认是1(或MEDIUM):

show variables like 'validate_password%';

修改validate_password_policy参数值为0,必须优先修改该参数,validate_password_length参数修改才能生效。

依次执行下面四条SQL语句:

set global validate_password_policy=0;

set global validate_password_length=1;

set global validate_password.policy=0;

set global validate_password.length=1;

最后再修改密码:

【删除mysql】

先检查mariadb,如果有,则删除mariadb。如果没有,则跳过。

[root@localhost ~]# rpm -qa|grep mariadb
[root@localhost ~]# rpm -e --nodeps mariadb-server
[root@localhost ~]# rpm -e --nodeps mariadb
[root@localhost ~]# rpm -e --nodeps mariadb-libs

再检查mysql,依次删除查到的这些组件。

[root@localhost ~]# rpm -qa|grep mysql
mysql-community-client-8.0.22-1.el7.x86_64
mysql-community-common-8.0.22-1.el7.x86_64
mysql-community-client-plugins-8.0.22-1.el7.x86_64
mysql-community-libs-compat-8.0.22-1.el7.x86_64
mysql80-community-release-el7-3.noarch
mysql-community-libs-8.0.22-1.el7.x86_64
mysql-community-server-8.0.22-1.el7.x86_64
[root@localhost ~]# rpm -e --nodeps xxx  #其中xxx表示具体的组件名称

2、使用压缩包安装

1、提前在mysql官网下载安装包,并将下载的压缩包mysql-8.0.29-linux-glibc2.12-x86_64.tar.xz通过xftp或MobaXterm等其他工具上传到Linux服务器上。

注意:从5.7.18开始官方不在二进制包中提供my.cnf或my-default.cnf文件,所以安装完成之后在/etc目录下没有my.cnf或my-default.cnf文件。

2、MySQL依赖libaio库,安装依赖

yum -y install libaio 或者 yum -y install perl perl-devel autoconf libaio

3、创建mysql用户

不需要登录的一个系统账号,启动MySQL服务时会使用该账号。

groupadd mysql

useradd -r -g mysql -s /bin/false mysql

4、解压并创建链接

tar zxvf /home/andy/software/package/mysql/mysql-8.0.29-linux-glibc2.12-x86_64.tar.gz

或者

tar -xvf /home/andy/software/package/mysql/mysql-8.0.29-linux-glibc2.12-x86_64.tar

或者

tar -xvJf /home/andy/software/package/mysql/mysql-8.0.29-linux-glibc2.12-x86_64.tar.xz

将解压后的目录复制到系统的本地软件目录/usr/local/下,并重命名为mysql。

cp -r mysql-8.0.29-linux-glibc2.12-x86_64 /usr/local/mysql

5、进入安装mysql软件目录,修改目录拥有者为mysql用户

cd /usr/local/mysql/

chown -R mysql:mysql ./

6、mysql初始化操作

./bin/mysqld  --initialize  --user=mysql  --basedir=/usr/local/mysql  --datadir=/usr/local/mysql/data

如果执行初始化操作报错:

./bin/mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory

# 如果初始化报错,请执行以下命令,查看是否安装齐全

yum search libaio
yum install libaio
yum -y install numactl
yum install libnuma
yum install ld-linux.so.2
yum install libaio.so.1
yum install libnuma.so.1
yum install libstdc++.so.6
yum install libtinfo.so.5

7、启动服务,success表示启动成功。

cd support-files/

./mysql.server start

8、添加开机启动,把启动脚本放到开机初始化目录。

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
# 赋予可执行权限
chmod +x /etc/init.d/mysql
# 添加服务
chkconfig --add mysql 
# 显示服务列表
chkconfig --list

如果看到mysql的服务,并且3,4,5都是on的话则成功,如果是off,则执行如下命令:

chkconfig --level 345 mysql on

以后就可以使用service mysql start/stop/status命令启动/停止/查看状态了。

9、配置mysql环境,修改/etc/profile文件,vim /etc/profile

export MYSQL_HOME=/usr/local/mysql

export MYSQL_PATH=${MYSQL_HOME}/bin:${MYSQL_HOME}/lib

export PATH=$PATH:/usr/local/mysql/bin

shutdown -r now 重启下服务器或者 source /etc/profile 均可使环境变量生效。

10、修改初始密码

安装libtinfo.so.5之后,登录还是报错,建一个软连接。

参考:https://blog.youkuaiyun.com/u011836730/article/details/80580847

ln -s  /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5

输入初始密码之后,登录成功。修改密码,并设置允许远程登录。

alter user 'root'@'localhost' identified by 'root1234';
use mysql;
update user set user.Host='%' where user.User='root';
flush privileges;

退出之后使用新密码重新登录,测试是否可以登录成功。

11、使用数据库工具测试连接

开启3306端口,命令:firewall-cmd --zone=public --add-port=3306/tcp --permanent

并重启防火墙,命令:firewall-cmd --reload

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值