一.源码编译安装

1.安装依赖(ubuntu)

apt-get install libncurses-dev
apt-get install pkg-config
apt-get install build-essential
apt-get install openssl
apt-get insatll cmake

2.安装依赖(centos)

yum -y install make gcc-c++ cmake bison-devel ncurses-devel perl openssl-devel autoconf

如果不手动下载boost库的话可以在使用cmake生成Makefile时设置DDOWNLOAD_BOOST为1进行下载。

3.下载boost

wget https://boostorg.jfrog.io/artifactory/main/release/1.79.0/source/boost_1_79_0.tar.gz

4.下载后解压即可。

wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.29.tar.gz
tar -zxvf mysql-8.0.29.tar.gz
cd mysql-8.0.29
mkdir a(新建自定义文件,主要是进入a文件夹执行camke)
cmake .. -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_unicode_ci -DENABLED_LOCAL_INFILE=ON -DCMAKE_INSTALL_PREFIX=/var/mysql -DMYSQL_DATADIR=/var/mysql/data -DMYSQL_TCP_PORT=3306 -DDOWNLOAD_BOOST=0 -DWITH_BOOST=/root/Desktop/boost

DDEFAULT_CHARSET:指定默认字符集为utf8mb4

DDEFAULT_COLLATION:排序规则,默认为utf8mb4_0900_ai_ci,属于utf8mb4_unicode_ci的一种。0900指的是Unicode校对算法版本,ai是指口音不敏感(as表示敏感),ci指不区分大小写(cs表示区分)。utf8mb4_unicode_ci表示基于标准的的Unicode来排序和比较,能够在各种语言之间精确排序,而utf8mb4_general_ci遇到某些特殊的字符集时排序结果可能不一致,准确性较差,但是性能较好,比较和排序时候更快

DENABLED_LOCAL_INFILE:表示能否使用load data命令

DWITH_SSL:表示使用系统的SSL库,若不使用系统的请自定义路径

DCMAKE_INSTALL_PREFIX:MySQL安装目录

DMYSQL_DATADIR:MySQL数据目录,初始时为空

DMYSQL_TCP_PORT:端口,默认3306

DDOWNLOAD_BOOST:取值0或1,是否下载Boost库

DWITH_BOOST:若不下载Boost库的话,是本地Boost库的位置,若下载Boost表示下载位置

  • 4.1安装

make install
  • 4.2新建mysql用户

adduser mysql
  • 4.3给文件夹授权

sudo chown mysql:mysql /var/mysql/data
sudo chmod 750 /var/mysql/data

  • 4.4修改环境变量

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

  • 4.5初始化

mysqld --initialize-insecure --user=mysql

会生成零时密码:XcGufukrG4_texport

  • 4.6开启ssl与rsa

mysql_ssl_rsa_setup
  • 4.7开启服务

mysqld_safe --user=mysql &
  • 4.8修改密码

mysql -uroot -p  #使用上面零时密码登陆修改密码才能使用
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码'; #修改密码以及加密字段;

5.插件推荐

apt-get install mycli

Mycli是一个MySQL命令行客户端工具,具有自动补全和语法高亮的功能。

ctenos

二、获取源并下载

1.下载源并安装服务端

wget https://dev.mysql.com/get/mysql80-community-release-el7-6.noarch.rpm
yum install mysql80-community-release-el7-6.noarch.rpm
yum install mysql-community-server

这里会报错

解决(设置gpgcheck=0)

vim /etc/yum.repos.d/mysql-community.repo

2.重新执行

yum install mysql-community-server

显示如下则为成功

启动 systemctl start mysqld.service

查看状态 systemctl status mysqld.service

查看初始化密码 grep "password" /var/log/mysqld.log

初始化密码中出现 !?( 用 '!' '?' '(' 分别包裹 才能成功识别登陆

3.登陆修改密码

mysql -uroot -p

修改密码才能使用数据库(默认密码检查策略要求密码必须包含:大小写字母、数字和特殊符号,并且长度不能少于8位。否则会提示ERROR 1819 (HY000): Your password does not satisfy the current policy requirements错误)

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

完成!

4.ctenos卸载mysql

  • 4.1执行如下命令查看已经安装的mysql

rpm -qa|grep -i mysql

  • 4.2执行如下命令卸载所有mysql软件包

yum -y remove mysql-*
yum -y remove mysql80-community-release-el7-6.noarch
rm -rf /var/log/mysqld.log
rm -rf /root/.mysql_history
  • 4.3执行如下命令查找mysql的相关安装目录(并删除即可)

find / -name mysql

完成!

三、rpm包安装

1.一台服务器只能安装一个版本的MySQL/MariaDB软件,所以需要删除原有的MySQL/MariaDB

rpm -qa | grep mysqld #查找mysqld,有就全部删除即可
rpm -qa | grep mariadb #查找mariadb
rpm -e mariadb-libs --nodeps #删除mariadb-libs-5.5.68-1.el7.x86_64
rpm -qa | grep mariadb

2.下载RPM包并解压

wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.29-1.el7.x86_64.rpm-bundle.tar
tar -xvf mysql-8.0.29-1.el7.x86_64.rpm-bundle.tar
  • 2.1.可选取相应包的即可,不必全部安装

3.安装MySQL相关包

rpm -ivh mysql-community-client-plugins-8.0.29-1.el7.x86_64.rpm --nodeps --force
rpm -ivh mysql-community-common-8.0.29-1.el7.x86_64.rpm --nodeps --force
rpm -ivh mysql-community-icu-data-files-8.0.29-1.el7.x86_64.rpm --nodeps --force
rpm -ivh mysql-community-client-8.0.29-1.el7.x86_64.rpm --nodeps --force
rpm -ivh mysql-community-libs-8.0.29-1.el7.x86_64.rpm --nodeps --force
rpm -ivh mysql-community-libs-compat-8.0.29-1.el7.x86_64.rpm --nodeps --force
rpm -ivh mysql-community-server-8.0.29-1.el7.x86_64.rpm --nodeps --force
注:–nodeps安装时不检查依赖关系 –force强制安装

4. 对mysql数据库的初始化和相关配置

mysqld --initialize --user=mysql
chown -R mysql:mysql /var/lib/mysql
systemctl start mysqld
systemctl enable mysqld
  • 4.1修改密码强度(不建议,安全风险)

set global validate_password_policy=LOW;
  • 4.2查找mysql登陆密码

grep "root@localhost" /var/log/mysqld.log

  • 4.3登录修改密码才可使用

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

完成!

5. 忘记密码(修改密码)

  • 5.1修改my.cnf配置文件

vim /etc/my.cnf

在[mysqld]下空白处增加 skip-grant-tables,然后保存退出

  • 5.2然后重启MySQL服务

systemctl restart mysqld

进入数据库,选择数据mysql并刷新权限

  • 5.3刷新权限,并修改 flush privileges; ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码';

再去配置文件my.cnf删除skip-grant-tables 保存退出重启就成功修改密码了

四、二进制安装

1. 创建mysql用户

adduser -s /sbin/nologin mysql #创建禁止登陆的用户
groupadd mysql
useradd -r -g mysql -s /usr/sbin/nologin mysql

2. 下载二进制包

wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz

3. 创建相关目录并授权

mkdir /usr/local/mysql #安装目录
chown -R mysql.mysql /usr/local/mysql
mkdir -p /opt/mysql/data #数据库数据目录
chown -R mysql.mysql /opt/mysql/data

4. 解压到下载大的到/usr/local/mysql目录下

tar -zxvf mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.39-linux-glibc2.12-x86_64/* /usr/local/mysql
cp /usr/local/mysql/bin/mysqld /usr/local/bin/ 配置系统变量
cp /usr/local/mysql/bin/mysqladmin /usr/local/bin/

5. 初始化

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

此时会零时密码

6. 配置my.cnf

  • 6.1 vim /etc/my.cnf

[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/opt/mysql/data
socket=/tmp/mysql.sock
server_id=1
log-bin=mysql-bin
binlog-format=Row
expire_logs_days=50
max_binlog_size=500M
wait_timeout=28800
interactive_timeout=28800
port=3306
sql-mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
log_error=/opt/mysql/data/mysql_err.log
max_allowed_packet=500M
pid-file =/opt/mysql/data/mysql.pid
character_set_server=utf8
#max_allowed_packet=16M 允许最大接收数据包的大小,防止服务器发送过大的数据包。
default_storage_engine=InnoDB # 创建数据表时,默认使用的存储引擎。
#max_connections=150 最大连接数,当前服务器允许多少并发连接。默认为 100,一般设置为小于 1000 即可。太高会导致内存占用过多,MySQL 服务器会卡死。作为参考,小型站设置 100 - 300
#max_user_connections=50 用户最大的连接数,默认值为 50 一般使用默认即可。
#thread_cache_size=64 线程缓存对应规则 1G 为 8;2G 为 16;3G 为 32;4G 为 64 等。
[client]
socket=/tmp/mysql.sock
  • 6.2创建客户端环境

cp /usr/local/mysql/bin/mysql /usr/local/bin/
  • 6.3系统快捷启动mysql

vim /etc/systemd/system/mysqld.service

[Unit]
Description=MySQL Server
Documentation=man:mysqld(5.7)
Documentation=https://dev.mysql.com/doc/refman/5.7/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
  • 6.4授权执行

chmod +x /etc/systemd/system/mysqld.service

7.启动

systemctl daemon-reload

systemctl start mysqld

use mysql;

select user,host from user;

update user set host='%' where user='root'; 开启远程访问

7. 在线安装指定版本

进入mysql官网获取RPM包下载地址,并安装

```

yum install https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

yum install mysql-server

```

![image-1679290715507](https://zmzycc.top/upload/2023/03/image-1679290715507.png)

```

解决办法:yum install mysql-server mysql-devel --nogpgcheck

再次执行命令:yum install mysql-server mysql-devel

```

systemctl start mysqld

systemctl daemon-reload

mysql安装完成之后,在/var/log/mysqld.log文件中给root生成了一个临时的默认密码。

vim /var/log/mysqld.log

![image-1679291090463](https://zmzycc.top/upload/2023/03/image-1679291090463.png)

修改策略(将策略要求置为LOW,长度要求置为1)

```

set global validate_password_policy=0;

set global validate_password_length=1;

```

接着修改密码:

```

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

```

Mysql默认不允许远程登录,我们需要设置下,并且防火墙开放3306端口。

```

GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

  • 赋予任何主机的访问权限:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '访问密码' WITH GRANT OPTION;
  • 或赋予指定主机(IP地址)的访问权限:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.51.167' IDENTIFIED BY '访问密码' WITH GRANT OPTION;
  • 赋予访问权限后,需要刷新权限表:

flush privileges;