二进制安装MySQL

下载二进制格式的mysql软件包
[root@localhost ~]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz

创建用户和组
[root@localhost ~]# useradd -M -s /sbin/nologin -g mysql mysql

解压软件至/usr/local/
[root@localhost ~]# tar xf mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz  -C  /usr/local/
[root@localhost local]# mv  /usr/local/mysql-5.7.38-linux-glibc2.12-x86_64  mysql         名字修改为mysql

修改目录/usr/local/mysql的属主属组
[root@localhost local]# chown -R mysql.mysql /usr/local/mysql
[root@localhost local]# ll mysql/
total 276
drwxr-xr-x.  2 mysql mysql   4096 Jul 27 09:11 bin
drwxr-xr-x.  2 mysql mysql     55 Jul 27 09:11 docs
drwxr-xr-x.  3 mysql mysql   4096 Jul 27 09:11 include
drwxr-xr-x.  5 mysql mysql   4096 Jul 27 09:11 lib
-rw-r--r--.  1 mysql mysql 259251 Mar 22 01:30 LICENSE
drwxr-xr-x.  4 mysql mysql     30 Jul 27 09:11 man
-rw-r--r--.  1 mysql mysql    566 Mar 22 01:30 README
drwxr-xr-x. 28 mysql mysql   4096 Jul 27 09:11 share
drwxr-xr-x.  2 mysql mysql     90 Jul 27 09:11 support-files


添加环境变量
[root@localhost local]# echo 'export PATH=$PATH:/usr/local/mysql/bin/' > /etc/profile.d/mysql.sh 
[root@localhost local]# echo $PATH
/usr/local/sbin:/usr/local/bin


设置头文件到系统里面,系统默认的头文件在/usr/include
[root@localhost local]# ln -sv /usr/local/mysql/include/  /usr/include/mysql
'/usr/include/mysql/include' -> '/usr/local/mysql/include/'

添加lib 
[root@localhost mysql]# vim /etc/ld.so.conf.d/mysql-x86_64.conf 
[root@localhost mysql]# ldconfig  重新加载配置
[root@localhost mysql]# cat /etc/ld.so.conf.d/mysql-x86_64.conf 
/usr/local/mysql/lib

man文档
[root@localhost mysql]# vim /etc/man_db.conf
MANDATORY_MANPATH            /usr/local/mysql/man  加上mysql,man文档的绝对路径

建立数据存放目录
[root@localhost ~]# mkdir -p /my/sql   
[root@localhost ~]# chown -R mysql.mysql /my/sql


[root@localhost ~]# /usr/local/mysql/bin/mysqld --initialize --user mysql  --datadir /my/sql/
2022-07-27T07:20:34.337161Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2022-07-27T07:20:34.800809Z 0 [Warning] InnoDB: New log files created, LSN=45790
2022-07-27T07:20:34.872070Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2022-07-27T07:20:34.935555Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 9b344d1f-0d7c-11ed-b691-000c29dbdd55.
2022-07-27T07:20:34.936411Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2022-07-27T07:20:35.044278Z 0 [Warning] A deprecated TLS version TLSv1 is enabled. Please use TLSv1.2 or higher.
2022-07-27T07:20:35.044302Z 0 [Warning] A deprecated TLS version TLSv1.1 is enabled. Please use TLSv1.2 or higher.
2022-07-27T07:20:35.044885Z 0 [Warning] CA certificate ca.pem is self signed.
2022-07-27T07:20:35.069745Z 1 [Note] A temporary password is generated for root@localhost: MaWB3(XhGy<c     这个是密码

--initialize  初始化命令
--user        是用那个用户
--datadir     指定mysql数据存放目录


配置mysql的配置文件
[root@localhost ~]# vim /etc/my.cnf
[mysqld]                       mysqld主程序
basedir = /usr/local/mysql     mysql安装在哪里
datadir = /my/sql              数据库目录
socket = /tmp/mysql.sock       套接字
port = 3306                    定义mysql服务的端口
pid-file = /my/sql/mysql.pid   进程文件放的位置
user = mysql                   那个用户
skip-name-resolve              跳过域名解析
sql-mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION  没有加这一行有可能报模块错误    

启动服务
[root@localhost ~]# cd /usr/lib/systemd/system
[root@localhost system]# cp sshd.service mysql.service 复制一个模板名字改为mysql.service
[root@localhost system]# cat mysql.service        
[Unit]
Description=mysql server daemon
After=network.target sshd-keygen.target

[Service]
Type=forking
ExecStart=/usr/local/mysql/support-files/mysql.server start
ExecStop=/usr/local/mysql/support-files/mysql.server stop
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target

[root@localhost system]#systemctl daemon-reload   刷新配置
[root@localhost system]# systemctl start mysql.service 开启服务



修改密码
使用临时密码登录
[root@localhost ~]#mysql -uroot -p         登录报错
mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory

[root@localhost system]# yum whatprovides libncurses.so.5   
Last metadata expiration check: 6:51:27 ago on Wed 27 Jul 2022 09:26:39 AM CST.
ncurses-compat-libs-6.1-9.20180224.el8.i686 : Ncurses compatibility libraries
Repo        : base
Matched from:
Provide    : libncurses.so.5

缺少libncurses.so.5库文件 就下载ncurses-compat-libs 这个包
[root@localhost ~]# yum -y install ncurses-compat-libs


[root@localhost ~]# mysql -uroot  -p  登录成功
Enter password:                      
mysql> 

源码安装mariadb

  1、源码安装数据库mariadb
1.验证是否有yum源, dnf list all列出所有可用的软件包,dnf repolist all列出所有可用的repo源(网络源)

 2.安装依赖包
[root@localhost ~]# dnf -y install wget bison zlib-devel  libcurl-devel boost-devel  gcc gcc-c++   cmake   ncurses-devel gnutls-devel libxml2-devel  openssl-devel  libevent-devel  libaio-devel  make
 
3.下载数据库的软件包
wget -c https://mirrors.aliyun.com/mariadb/mariadb-10.6.7/source/mariadb-10.6.7.tar.gz
[root@localhost ~]# 1s  能够成功看到即代表成功
![image.png](/upload/2022/03/image-5ac5a59107dd4f3bae7b3575887c1cd8.png)

4.对软件包进行解压
[root@localhost ~]# tar xf mariadb-10.6.6.tar.gz -C /usr/local/
(xf代表的是解压,如果想查看过程跟上v选项,-C指的是解压的路径)

5.进入解压包进行编译(以前源码安装三步骤:1.配置./configure 2.编译make 3.安装make install)

 配置  ./configure 
[root@localhost mariadb-10.6.6]#
./configure  -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb \   数据库安装的位置
-DMYSQL_DATADIR=/data/mariadb/       \                             数据库存放的位置
-DSYSCONFDIR=/usr/local/mariadb  \                          数据库配置文件的位置
-DMYSQL_USER=mysql    \
 -DMYSQL_TCP_PORT=3306            数据库用户和端口号
-DWITHOUT_TOKUDB=1                    \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \                           套接字文件位置
-DDEFAULT_CHARSET=utf8 \                                                 支特的字符 
-DDEFAULT_COLLATION=utf8_general_ci     \
@编译安装
|[root@localhost mariadb-10.6.6]# grep "model name"/proc/cpuinfo //查看CPU核心数
[rooterocalhost mariadb-10.6.6] make  -j4 && make install 让make最多允许4个编译命令同时执行 ,&&代表把前面的内容执行完之后再去之后后面的命令
如果发现编译报错,需要删除cmake执行后巨经生成的文件删除,再去重新编译

 6.配置启动文件以及权限
创建用户

[root@localhost ~]# useradd -r -s /sbin/nologin -d /data/mariadb mysql

创建数据存放的位置

[root@localhost ~]#  mkdir -p /data/mariadb

修改数据存放位置目录的所有者

[root@localhost ~]# chown -R mysql /data/mariadb/

修改数据库安装位置的所有者和所属组

[root@localhost ~]# chown -R mysql:mysql  /usr/local/mariadb

[mysqld]
basedir=/usr/local/mariadb/              数据库安装的位置
datadir=/data/mariadb/                      数据存放的位置
port-3306                                              数据库端口号
_pid-file=/data/mariadb/mysql.pid    进程文件位置 
|socket=/tmp/mysql.sock                    套接字文件的位置

[mysqld_safe]  
log-error-/data/mariadb/mysql.log     错误日志的存放位置 

[client]
port=3306                                              端口号
socket=/tmp/mysql.sock                      套接字文件
default-character-set=utf8                   支持的字符


 7.测试数据库是否正常
  [root@localhost_#/usr/local/mariadb/scripts/mariadb-install-db --datadir=/data/mariadb

8.修改权限
[root@localhost ~]# chown -R root /usr/local/mariadb
[root@localhost ~]# chown -R mysql.mysql /data/mariadb
9.开启数据库并且登录
开启数据库
[root@localhost ~]# /etc/init.d/mysqld start 

设置数据库开机自启并开启
[root@localhost ~]# chkconfig --add mysqld 

登录数据库
[root@localhost bin]#/usr/local/mariadb/bin/mysql 

10.添加环境变量
 添加环境变量的语法:echo “export PATH=命令所在的位置:$PATH">/etc/profile.d/xx.sh
[root@localhost bin]# echo "export PATH=/usr/local/mariadb/bin:$PATH">/etc/profile.d/mariadb.sh

让环境变量生效
[root@localhost bin]# source /etc/profile.d/mariadb.sh  

11.进行安全初始化数据库
[root@localhos~]#/usr/local/mariadb/bin/mysql_secure_installation

12.使用新密码登录数据库
[root@localhost ~]# mysql -uroot -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 18
Server version: 10.6.6-MariaDB Source distribution