在centos7.9安装mysql

mysql的安装大体上也分为两种方式,手动下载安装和yum安装,以下分别进行介绍。

yum安装

注意,本yum安装的环境是阿里云的centos7.9,默认安装的版本是mysql8.0的Community版本。

下载和安装

  • 更新yum源:
sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
  • 运行以下命令,进行yum安装
sudo yum -y install mysql-community-server --enablerepo=mysql80-community --nogpgcheck
  • 完成后通过以下命令查看mysql版本
mysql -V

出现以下信息说明安装成功
在这里插入图片描述

初始配置

  • 启动服务,设置开机启动
sudo systemctl start mysqld
sudo systemctl enable mysqld
  • 运行以下命令,获取并记录root用户的初始密码
sudo grep 'temporary password' /var/log/mysqld.log

执行结果如下:

2022-02-14T09:27:18.470008Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: r_V&f2wyu_vI
  • 运行以下命令,进行安全配置
sudo mysql_secure_installation
  • 设置密码

    Enter password for user root: #输入已获取的root用户初始密码
    
    The existing password for the user account root has expired. Please set a new password.
    
    New password: #输入新的MySQL密码
    
    Re-enter new password: #重复输入新的MySQL密码
    The 'validate_password' component is installed on the server.
    The subsequent steps will run with the existing configuration
    of the component.
    Using existing password for root.
    Change the password for root ? ((Press y|Y for Yes, any other key for No) :Y #输入Y选择更新MySQL密码。您也可以输入N不再更新MySQL密码。
    
    New password: #输入新的MySQL密码
    
    Re-enter new password: #重复输入新的MySQL密码
    
    Estimated strength of the password: 100
    Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) :Y #输入Y确认使用已设置的密码。
    
  • 删除匿名用户(以下为可选设置)

  • 禁止root远程访问

  • 删除test库

设置远程访问方式

  • 登录mysql

    sudo mysql -uroot -p
    
  • 依次运行以下命令,创建远程登录MySQL的账号,并允许远程主机使用该账号访问MySQL

    #创建数据库用户dmsTest,并授予远程连接权限。
    create user 'testuser'@'%' identified by 'Abc@123456'; 
    #为dmsTest用户授权数据库所有权限。
    grant all privileges on *.* to 'testuser'@'%'; 
    #允许远程方式,通过密码验证
    ALTER USER 'testuser'@'%' IDENTIFIED WITH mysql_native_password BY 'Abc@123456';
    #刷新权限。
    flush privileges; 
    
  • 通过NaviCat连接成功,(注意服务器端要开放3306的端口)
    在这里插入图片描述

手动下载安装

接下来介绍手动安装

安装环境检查

检查是否已有mysql或者mariadb。玛利亚DB是一个mysql的轻量化版本,一般存在于自己搭建的cenos环境中,所以要先把它删除掉。在阿里云的环境里,默认没有玛利亚DB,所以没有这一步

rpm -qa | grep mysql
rpm -qa | grep mariadb

搜索安装目录

whereis mysql

找到后进行删除

rpm -e --nodeps mysql-xxxx
rpm -e --nodeps mariadb-libs

下载和安装

在如下地址下载mysql社区版本:

https://downloads.mysql.com/archives/community/

也可以使用wget下载,需要事先安装wget工具

wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.2.0-linux-glibc2.28-x86_64.tar.xz

下载后放到opt/apps目录下,执行解压

tar -zxvf mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz

# 如果是xz,比如如下版本,请按如下解压
tar -xvJf mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz

文件夹名字修改为 mysql5.7,(如果你安装的是mysql8,建议文件夹名字是mysql8),创建用户和赋予权限

mv mysql-5.7.36-linux-glibc2.12-x86_64 mysql5.7
groupadd mysql          #创建属组
useradd -r -g mysql mysql         #创建用户
chown -R mysql:mysql mysql5.7
chmod -R 775 mysql5.7

进入mysql5.7文件夹,创建data

mkdir data

如果直接安装可能报错:

错误信息:Installing MySQL system tables…/bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
这是因为缺少依赖库,先安装libaio

yum install -y libaio

进入bin目录下,执行安装命令

./mysqld --initialize --user=mysql --datadir=/opt/apps/mysql5.7/data --basedir=/opt/apps/mysql5.7

注意,此处如果安装版本是MySQL8以上,需要指定-lower-case-table-names=1,也就是不区分大小写,否则以后可就要踩大坑了。


./mysqld --initialize --user=mysql --lower-case-table-names=1 --datadir=/opt/apps/mysql8.0/data --basedir=/opt/apps/mysql8.0

保存最后出现的初始密码备用:

A temporary password is generated for root@localhost: VdP5jwn.oAQ!

初始设置

修改环境变量:

vim /opt/apps/mysql5.7/support-files/mysql.server
:set number

注意以下都修改为安装路径

 63 mysqld_pid_file_path=
 64 if test -z "$basedir"
 65 then
 66   basedir=/opt/apps/mysql5.7
 67   bindir=/opt/apps/mysql5.7/bin
 68   if test -z "$datadir"
 69   then
 70     datadir=/opt/apps/mysql5.7/data
 71   fi
 72   sbindir=/opt/apps/mysql5.7/bin
 73   libexecdir=/opt/apps/mysql5.7/bin

创建软链接

ln -s /opt/apps/mysql5.7/support-files/mysql.server /etc/init.d/mysql
ln -s /opt/apps/mysql5.7/bin/mysql /usr/bin/mysql

创建配置文件

vim /etc/my.cnf

内容如下:

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
# 作用是禁止域名解析:在mysql的授权表中就不能使用主机名了,只能使用IP
skip-name-resolve
# 设置3306端口
port = 3306
# 设置远程访问ip
bind-address=0.0.0.0
# 设置mysql的安装目录
basedir=/opt/apps/mysql5.7
# 设置mysql数据库的数据的存放目录
datadir=/opt/apps/mysql5.7/data
log_error=/opt/apps/mysql5.7/data/error.log
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 设置查询操作等不区分大小写
lower_case_table_names=1
sql_mode =STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

设置文件权限:

chmod -R 775 /etc/my.cnf

启动和修改密码

启动服务,和其他常用命令

# 启动
service mysql start
# 关闭和重启
service mysql stop
service mysql restart

设置开机启动

chkconfig --add mysql

chkconfig --list # 确认是否开机启动

用刚刚的密码登录

mysql -u root -p

然后修改密码

set password for root@localhost = password('abc@1234');
# mysql8用以下命令
ALTER USER 'root'@'localhost' IDENTIFIED BY 'abc@1234';
quit

允许远程连接

允许远程用户连接,这里最后新建一个用户来远程连接,用root来进行远程连接是不安全的:

grant all privileges on *.* to 'root'@'%' identified by 'abc@1234';

# Mysql8需要修改用户属性
update user set user.Host='%' where user.User='root';
# 设置通过密码认证
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'abc@1234';
flush privileges;

以下命令可以查看用户

select host,user,password_expired,password_last_changed,password_lifetime FROM mysql.user;

如果开启了防火墙,首先开放3306端口

firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 重启一下防火墙服务
firewall-cmd --reload

然后就可以通过Navicat连接了

  • 23
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值