Centos7 使用yum 安装mysql

Centos7 使用yum 安装mysql

1、下载yum安装源

官网:https://dev.mysql.com/downloads/repo/yum/
在这里插入图片描述
如图,目前的版本已经到8了,我们先把yum源下载下来,并且导入到linux服务器目录下。

然后我们执行rpm -ivh mysql80-community-release-el7-3.noarch.rpm

当然还有一种方式,就是我们直接在线下载:直接安装自己需要的版本

wget http://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm

2、修改yum源,设置版本(可选)

当我们安装mysql的yum源后,会在/etc/yum.repos.d/ 多出两个文件:mysql-community.repomysql-community-source.repo

在MySQL Yum存储库、MySQL社区服务器的不同版本系列托管在不同的子存储库中。最新的GA系列(当前的MySQL 8.0)的子存储库在默认情况下是启用的,所有其他系列(例如,MySQL 5.7系列)的子存储库在默认情况下是禁用的。

使用此命令查看MySQL Yum存储库中的所有子存储库,并查看哪些子存储库已启用或禁用,

yum repository 安装mysql的方式我们是可以选择自己的软件源的。如果不修改就跳过。/etc/yum.repos.d/

[mysql-connectors-community]
name=MySQL Connectors Community
baseurl=http://repo.mysql.com/yum/mysql-connectors-community/el/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

[mysql-tools-community]
name=MySQL Tools Community
baseurl=http://repo.mysql.com/yum/mysql-tools-community/el/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

# Enable to use MySQL 5.5
[mysql55-community]
name=MySQL 5.5 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.5-community/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

# Enable to use MySQL 5.6
[mysql56-community]
name=MySQL 5.6 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

# Note: MySQL 5.7 is currently in development. For use at your own risk.
# Please read with sub pages: https://dev.mysql.com/doc/relnotes/mysql/5.7/en/
[mysql57-community-dmr]
name=MySQL 5.7 Community Server Development Milestone Release
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

上面我是自己修改了,改为5.7. 主要修改这个enabled就可以。用哪个版本,就把那个版本下改为enabled=1,其他的全部enabled=0; 当然也可以复制粘贴一个新的版本。

查看不同版本默认启用情况:

可以看到 enabled 的情况,当前命令其实就是查看/etc/yum.repos.d目录中的 mysql-community.repo和mysql-community-source.repo文件内容

[root@iZszxghs0ozok0Z yum.repos.d]# yum repolist all |grep mysql

!mysql-connectors-community/x86_64 MySQL Connectors Community    enabled:     95
mysql-connectors-community-source  MySQL Connectors Community -  disabled
!mysql-tools-community/x86_64      MySQL Tools Community         enabled:     84
mysql-tools-community-source       MySQL Tools Community - Sourc disabled
mysql55-community/x86_64           MySQL 5.5 Community Server    disabled
mysql55-community-source           MySQL 5.5 Community Server -  disabled
!mysql56-community/x86_64          MySQL 5.6 Community Server    enabled:    446
mysql56-community-source           MySQL 5.6 Community Server -  disabled
mysql57-community-dmr/x86_64       MySQL 5.7 Community Server De disabled
mysql57-community-dmr-source       MySQL 5.7 Community Server De disabled

修改完查看默认启用的最终版本情况:

[root@iZszxghs0ozok0Z yum.repos.d]# yum repolist enabled | grep mysql
!mysql-connectors-community/x86_64 MySQL Connectors Community                 95
!mysql-tools-community/x86_64      MySQL Tools Community                      84
!mysql56-community/x86_64          MySQL 5.6 Community Server                446

可以看到,我们默认开启了 5.6 版本,

总结下这几个命令

yum repolist all |grep mysql
yum repolist enabled | grep mysql

3、安装mysql

3.1检查是否安装

卸载之前安装的mysql:

yum list installed | grep mysql或者

rpm -qa | grep -i mysql

查看是否已经有安装的mysql,如果有,需要手动卸载掉。

rpm -e --nodeps 软件名 或者yum -y remove 软件名

卸载centos7自带的 mariadb 数据库:

rpm -qa | grep mariadb
#如果找到,就卸载
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64

3.2 安装

安装之前如果没有更新yum 的最好更新下

yum upgrade   #更新软件源
yum install mysql-community-server #安装mysql

添加一个用户,专门负责mysql:

useradd mysql #新增mysql用户
passwd mysql  #设置密码

权限设置:

因为数据库文件在这,需要给权限,这里创建了mysql这个用户以及mysql组,

chown mysql:mysql -R /var/lib/mysql

然后设置可写权限:chmod -R 777 /var/lib/mysql 不然innodb报错

初始化并启动mysql:

mysqld --initialize  #初始化
systemctl start mysqld.service  #启动

查看mysql 运行状态:

systemctl status mysqld 看到active (running) 表示正常。

[root@iZszxghs0ozok0Z yum.repos.d]# systemctl status mysqld
● mysqld.service - MySQL Community Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2019-03-23 01:40:37 CST; 3 days ago
  Process: 9115 ExecStartPost=/usr/bin/mysql-systemd-start post (code=exited, status=0/SUCCESS)
  Process: 9055 ExecStartPre=/usr/bin/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
 Main PID: 9114 (mysqld_safe)
   CGroup: /system.slice/mysqld.service
           ├─9114 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
           └─9280 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/l...


3.3 验证MySql的安装

mysqladmin --version

[root@iZszxghs0ozok0Z yum.repos.d]# mysqladmin --version
mysqladmin  Ver 8.42 Distrib 5.6.43, for Linux on x86_64

执行这条命令,如果未输出任何信息,说明未安装成功。

4、配置mysql

4.1 设置用户密码

mysql5.7安装后会生成一个默认密码,如果直接登录可能报错。

可能出现:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO),因为mysql5.7给root用户默认创建了一个密码,存在log日志里面,执行下面命令找出。

grep "temporary password" /var/log/mysqld.log 

2021-05-07T15:27:11.781922Z 1 [Note] A temporary password is generated for root@localhost: ;(fA9tbfoL*;

#这里的;(fA9tbfoL*; 就是默认密码

mysql -u root -p ;(fA9tbfoL*;登录mysql,进行操作。

执行操作会出现如下错误:

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

需要我们重置root密码:

alter user 'root'@'localhost' identified by 'Root_11'; #密码有规则,太简单会报错
或set password for 'root'@'localhost'=password('Root_11');

如果出现密码强度不够:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements:

#密码的长度是由validate_password_length决定的,但是可以通过以下命令修改
set global validate_password_length=4;
#validate_password_policy决定密码的验证策略,默认等级为MEDIUM(中等),可通过以下命令修改为LOW(低)
set global validate_password_policy=0;

修改完成后密码就可以设置的很简单,比如123456。

4.2 添加账号,设置权限

我们默认是用的root权限,如果不想直接用root这个账号远程操作数据库,需要我们手动创建一个账号。

(1)登录mysql , mysql -u root -p

(2)创建账号admin,并将密码设为123456,设置访问权限。

grant all on *.* to admin@'%' identified by "123456";

%代表任何客户机都可以连接,localhost代表只可以本机连接

当然可以分步,比如:

grant all on *.* to admin@'localhost' identified by '123456';

这里是只添加了账号,外部还是不能访问,我们可以修改权限。

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

以上两种方式都是可以的,这里只是说明,避免误解。

创建后在mysql库的user表下查看,有该用户。
但是使用“mysql -u admin -p” 登录,
提示无法登录:ERROR 1045 (28000): Access denied for user ‘admin’@‘localhost’ (using password: YES)

原因:官网解释

其中两个账户有相同的用户名monty和密码some_pass。两个账户均为超级用户账户,具有完全的权限可以做任何事情。一个账户 (‘monty’@‘localhost’)只用于从本机连接时。另一个账户(‘monty’@’%’)可用于从其它主机连接。
请注意monty的两个账户必须能从任何主机以monty连接。没有localhost账户,当monty从本机连接时,mysql_install_db创建的localhost的匿名用户账户将占先。结果是,monty将被视为匿名用户。原因是匿名用户账户的Host列值比’monty’@’%'账户更具体,这样在user表排序顺序中排在前面。

所以我们在加一个同样的账号,host设为 localhost即可

grant all on *.* to admin@'localhost' identified by "123456";

(3)查看下是否添加或者修改成功

use mysql;
select user,host from user where user="admin"

这时候应该会输出,

mysql> select user,host from user where user='admin';
+-------+------+
| user  | host |
+-------+------+
| admin | %    |
+-------+------+
1 row in set (0.00 sec)

(4) 更新数据库

命令:flush privileges;

5、设置远程登录

由于我们的服务器在远程,比如阿里云,我们设置远程登录,就不用像虚拟机那样了。我们只需要开放阿里云权限策略组的3306 端口。

这个这里就不贴图了,登录自己的阿里云服务器,进入安全组——添加规则——添加mysql协议,默认为3306,授权对象设为 0.0.0.0/0 就可以了。然后用sqlyog或者Navicat试一下。

如果还不行:多半是防火墙的问题,请自行百度+google 很多。

以虚拟机为例,开放3306端口:

#开放3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent   
#重启防火墙
firewall-cmd --reload
#查看端口号是否开启
firewall-cmd --query-port=3306/tcp
#查看所有打开的端口
firewall-cmd --zone=public --list-ports

如果没有装防火墙,需要重新设置下(可选,不同情况不一样,保证firewall-cmd可用即可):

yum install firewalld systemd -y #安装防火墙
systemctl start  firewalld.service #开启防火墙

yum install -y curl policycoreutils-python openssh-server perl #安装ssh协议
#如果报错,重建数据库
rpm --rebuilddb && yum install -y curl policycoreutils-python openssh-server perl 

systemctl enable sshd #设置ssh服务开机启动
systemctl start sshd #启动ssh服务
firewall-cmd --permanent --add-service=http #添加http服务到firewalld
firewall-cmd --permanent --add-service=https #添加HTTPS服务到firewalld
systemctl reload firewalld #重启防火墙

6、设置开机启动

  • etc/systemd/system 下面创建mysqld.service 文件

    [root@localhost system]# touch /etc/systemd/system/mysqld.service
    [root@localhost system]# cd /etc/systemd/system
    
  • 编辑mysqld.service文件,加入下面内容,保存退出

    [root@localhost system]# vim mysqld.service
    
    [Unit]
    Description=MySQL Server
    Documentation=man:mysqld(8)
    Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
    After=network.target
    After=syslog.target
    
    [Install]
    WantedBy=multi-user.target
    
    [Service]
    User=mysql
    Group=mysql
    ExecStart=/usr/sbin/mysqld --defaults-file=/etc/my.cnf
    LimitNOFILE = 5000
    
  • ExecStart=/usr/sbin/mysqld (这里根据实际情况修改,本机mysql的安装路径),使用 which mysqld命令可查看

    [root@localhost system]# which mysqld
    /usr/sbin/mysqld
    
  • 设置开启自启动

    systemctl enable mysqld #设置开启自启动
    systemctl start mysqld  #现在启动mysql服务
    
  • systemctl enable mysqld执行后出现(Created symlink from …)表示加入开机自启成功。如果出错提示已经有了mysql.service ,

7、mysql管理常见linux命令

7.1.启动命令

[root@localhost usr]#  service mysqld start
Redirecting to /bin/systemctl start mysqld.service

7.2.关闭命令

[root@localhost usr]# service mysqld stop
Redirecting to /bin/systemctl stop mysqld.service

7.3.重启命令

[root@localhost usr]# service mysqld restart
Redirecting to /bin/systemctl restart mysqld.service

7.4.查看服务状态

[root@localhost usr]# service mysqld status
Redirecting to /bin/systemctl status mysqld.service

● mysqld.service - MySQL Server
   Loaded: loaded (/etc/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since 六 2021-05-08 18:01:03 CST; 5h 6min ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
 Main PID: 3332 (mysqld)
   CGroup: /system.slice/mysqld.service
           └─3332 /usr/sbin/mysqld --defaults-file=/etc/my.cnf

5月 08 18:01:03 localhost.localdomain systemd[1]: Started MySQL Server.

7.5.查看MySql系统配置

[root@localhost usr]# cat /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

[mysqld]
max_allowed_packet=1024M
#
# 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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值