安装MySQL数据库

CentOS7上安装MySQL的5.78.0的社区版本

在Linux上安装软件,常用的有几种方式,可以查看redis安装篇开头描述的。

如果想在虚拟机中安装,可以参考快速搭建虚拟机环境

安装8.0版本

这里用rpm来安装。

下载rpm包

  • 方式一

进入官方rpm,点击:

这里根据操作系统和CPU架构情况选。

进入新页面,这里跳过注册社区账号,下拉看到No thanks, just start my download.链接,下载它。

  • 方式二

方式一用的是国外的源,下载相对较慢。

查看自己机器架构情况:

copy
[root@2207012 resource]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
[root@2207012 resource]# uname -r
3.10.0-1127.el7.x86_64

进入163的rpm包地址。不会设置163yum源的,可以查看这篇小建议目录下的链接。

根据自己的机器架构情况选择了:http://mirrors.163.com/mysql/Downloads/MySQL-8.0/mysql-8.0.27-1.el7.x86_64.rpm-bundle.tar,通过wget或者其它方式下载。

安装rpm包

copy
[root@2207012 resource]# tar -xvf mysql-8.0.27-1.el7.x86_64.rpm-bundle.tar
[root@2207012 resource]# yum remove -y $(rpm -qa | grep mariadb)
[root@2207012 resource]# wget http://mirror.centos.org/centos/7/os/x86_64/Packages/perl-Test-Simple-0.98-243.el7.noarch.rpm
[root@2207012 resource]# rpm -ivh perl-Test-Simple-0.98-243.el7.noarch.rpm
[root@2207012 resource]# yum install -y libaio net-tools openssl-devel perl-devel autoconf  perl-JSON.noarch
[root@2207012 resource]# rpm -ivh $(ls | grep '^mysql.*rpm$')

安装完成之后,发现创建了一个mysql用户:

copy
[root@2207012 resource]# cat /etc/passwd | grep mysql
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/false

接着验证安装是否成功:

copy
[root@2207012 resource]# which mysql mysqld
/usr/bin/mysql
/usr/sbin/mysqld
[root@2207012 resource]# ps -ef | grep mysql
root      4244  4043  0 02:12 pts/1    00:00:00 grep --color=auto mysql
[root@2207012 resource]# service mysqld start
Redirecting to /bin/systemctl start mysqld.service
[root@2207012 resource]# ps -ef | grep mysql
mysql     4355     1  7 02:15 ?        00:00:01 /usr/sbin/mysqld
root      4400  4043  0 02:15 pts/1    00:00:00 grep --color=auto mysql
[root@2207012 resource]# netstat -lntp | grep 3306
tcp6       0      0 :::33060                :::*                    LISTEN      4355/mysqld
tcp6       0      0 :::3306                 :::*                    LISTEN      4355/mysqld
[root@2207012 resource]# rpm -ql mysql-community-server
/etc/logrotate.d/mysql
/etc/my.cnf
/etc/my.cnf.d
...

可以正常启动mysql服务,安装成功!

mysql的默认配置文件是/etc/my.cnf

接下来修改登录密码:

copy
[root@2207012 resource]# grep 'password' /var/log/mysqld.log
2022-09-28T02:15:11.363374Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: !WLbl(s_;1qQ
[root@2207012 resource]#  mysql --user=root --password='!WLbl(s_;1qQ'
mysql> alter user 'root'@'localhost' identified with mysql_native_password by '123456';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
# 由于无法直接设置简单的密码,必须是特殊符号加大小写字母的组合
mysql> alter user 'root'@'localhost' identified with mysql_native_password by '先设置一个复杂密码';
# 在去修改一个简单的密码
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)
mysql> alter user 'root'@'localhost' identified with mysql_native_password by '123456';
Query OK, 0 rows affected (0.00 sec)

安装5.7版本

这里用二进制包方式安装。

本次安装在另一台机器上。

下载二进制包

进入官方二进制包

这里看着自己系统和CPU架构情况选,然后点击Download下载它。

安装

copy
# 安装依赖
[root@2207011 ~]#  yum install -y libaio libaio-devel
# 删除旧的mysql
[root@2207011 ~]# yum remove -y $(rpm -qa | grep mariadb)
# 添加mysql系统用户
[root@2207011 ~]# groupadd mysql
[root@2207011 ~]# useradd -r -g mysql -s /bin/false mysql
# 解压安装包
[root@2207011 ~]# mkdir /usr/local/mysql-5.7.39
[root@2207011 resource]# tar -xvf mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz -C /usr/local/mysql-5.7.39 --strip-components 1
[root@2207011 resource]# ln -s /usr/local/mysql-5.7.39 /usr/local/mysql
[root@2207011 resource]# chown -R mysql:mysql /usr/local/mysql-5.7.39
[root@2207011 resource]# cd /usr/local/mysql
# 创建ssl证书和密钥 以支持客户端ssl连接 这步可以不执行
[root@2207011 mysql]# bin/mysql_ssl_rsa_setup
# 后台运行mysql,相应参数有:--user=mysql 指定mysql用户 --defaults-file=/etc/my.cnf 指定mysql的配置 --skip-grant-tables mysql客户端可以无密码连接
[root@2207011 mysql]# bin/mysqld_safe --user=mysql --skip-grant-tables &
# 创建mysql的系统服务
[root@2207011 mysql]# cp support-files/mysql.server /etc/init.d/mysql
[root@2207011 mysql]# service mysql status
[root@2207011 mysql]# ps -ef | grep mysqld
root     28347     1  0 11:12 pts/0    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/2207011.pid
mysql    28434 28347  0 11:12 pts/0    00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=2207011.err --pid-file=/usr/local/mysql/data/2207011.pid
root     28486  9162  0 11:18 pts/0    00:00:00 grep --color=auto mysqld

看到MySQL服务进程,安装成功。

由于启动时候添加了--skip-grant-tables参数,所以通过bin/mysql客户端连接时候可以不用密码。

copy
[root@2207011 mysql]# bin/mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.39 MySQL Community Server (GPL)

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

关于设置账号密码,可以参考官方文档的SET PASSWORD Statement设置。

copy
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select user,host,authentication_string,account_locked from user;
+---------------+-----------+-------------------------------------------+----------------+
| user          | host      | authentication_string                     | account_locked |
+---------------+-----------+-------------------------------------------+----------------+
| root          | localhost | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | N              |
| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | Y              |
| mysql.sys     | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | Y              |
+---------------+-----------+-------------------------------------------+----------------+
3 rows in set (0.00 sec)

#  直接修改会报错
mysql> set password for 'root'@'localhost'=password('123456');
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> set password for 'root'@'localhost'=password('123456');
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> quit

修改之后就可以通过新密码登录了。

总结

rpm方式已经规划好文件的路径,对应命令(如mysql、mysqldumpslow等)设置到了系统路径下,有配置文件/etc/my.cnf等,只要启动它去用就好。

通用二进制包没有规划文件路径,对应命令也没有设置到系统路径下,没有配置文件my.cnf等,这些都需要自己设置。

但通常我们都会创建一个配置文件,提前设置好相关的系统参数,如/etc/my.cnf这种,然后启动服务的时候通过--defaults-file=/etc/my.cnf来指定下,否则在启动时加入各种--xx之类的参数,显得很乱!

公司的一位运维同事说,他安装MySQL主要用通用二进制包的方式。

除了以上两种方式,还可以通过编译源码包来安装,这种方式要求比较高,要清楚对应的编译参数,各项依赖等,如果不是有特殊研究需要,选择以上两种方式之一安装就好!

本文作者:笑笑霸

本文链接:https://www.cnblogs.com/xiaoxiaobug/p/16725452.html

期待你的关注、收藏、评论,欢迎转载,请指明原文链接

posted @   笑笑霸  阅读(59)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起