源码离线安装mariadb

2023-05-16

源码离线安装mariadb

卸载系统自带mariadb-libs

使用下面的命令检查是否安装有MySQL\MariaDB

rpm -qa | grep mariadb

rpm -e mariadb-libs-5.5.68-1.el7.x86_64 --nodeps

在这里插入图片描述

添加组和用户


[root@localhost soft]# groupadd -r mysql

[root@localhost soft]# useradd -r -g mysql -s /sbin/nologin -d /usr/local/app/mysql -M mysql

[root@localhost soft]# chown -R mysql:mysql /usr/local/app/mysql/data

编译源代码

使用cmake命令编译
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/app/mysql
-DMYSQL_DATADIR=/usr/local/app/mysql/data 
-DSYSCONFDIR=/etc 
-DWITH_MYISAM_STORAGE_ENGINE=1
-DWITH_INNOBASE_STORAGE_ENGINE=1 
-DWITH_MEMORY_STORAGE_ENGINE=1 
-DWITH_READLINE=1
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock
-DMYSQL_TCP_PORT=3306 
-DENABLED_LOCAL_INFILE=1 
-DWITH_PARTITION_STORAGE_ENGINE=1 
-DEXTRA_CHARSETS=all 
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/home/mysql/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci

	注:

	-DCMAKE_INSTALL_PREFIX=/usr/local/mysql       (指定mariadb 安装的路径)

	-DMYSQL_DATADIR=/data/mysql/                  (指定mariadb的数据存放路径

	-DSYSCONFDIR=/etc                             (指定mairiadb的配置文件,my.cnf的路径

	-DMYSQL_USER=mysql      				      (指定用户为mysql)

	-DWITH_INNOBASE_STORAGE_ENGINE=1              (编译INNODB引擎)	

	-DWITH_ARCHIVE_STORAGE_ENGINE=1               (编译ARCHIVE引擎)	

	-DWITH_BLACKHOLE_STORAGE_ENGINE=1             (编译BLACKHOLE引擎)	

	-DWITH_PARTITION_STORAGE_ENGINE=1             (编译PARTITION引擎)	

	-DWITHOUT_MROONGA_STORAGE_ENGINE=1            (不编译MROONGA引擎)	

	-DWITH_DEBUG=0                                (将Debug Sync工具编译到服务器中)											
	-DWITH_READLINE=1                             																						
	-DWITH_SSL=system                             (要包含的SSL支持类型或要使用的OpenSSL安装的路径名。)	
	
    -DWITH_ZLIB=system                            (编译zlib)						

	-DWITH_LIBWRAP=0                              (Whether to include libwrap (TCP wrappers) support.)	
    
	-DENABLED_LOCAL_INFILE=1                      (This option controls the compiled-in default LOCAL capability for the MySQL client library)

	-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock      (服务器侦听套接字连接的Unix套接字文件路径。这必须是绝对路径名。默认是/tmp/mysql.sock)

	-DDEFAULT_CHARSET=utf8                        (指定字符集)

	-DDEFAULT_COLLATION=utf8_general_ci           

	编译选项:https://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html

提示:如果出错,执行rm -f CMakeCache.txt

make && make install

编译过程报错 make[2]: * [sql/CMakeFiles/sql.dir/sql_yacc.cc.o] Error

make[2]: *** [sql/yy_mariadb.cc] 错误 141 make[1]: *** [sql/CMakeFiles/gen_l

安装bison 3.o

安装低版本bison 3.0报错

在这里插入图片描述

安装m4包

./configure

make

make install

解决pcre hash值不匹配问题

在这里插入图片描述

生成数据库文件

scripts/mysql_install_db --user=mysql --datadir=/usr/local/app/mysql/data

在这里插入图片描述

生成数据库文件报错解决办法

scripts/mysql_install_db --datadir=/usr/local/app/mysql/data 
--user=mysql 不要加入 --user=mysql参数,会莫名其妙的报错


修改配置文件

将mariadb配置文件copy到/etc目录下
在这里插入图片描述

将mysql.server重命名为mysqld,并移动到/etc/init.d/

在这里插入图片描述

[root@localhost mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod +x /etc/init.d/mysqld

my.cnf 配置文件修改

my.cnf权限必须为644

##
## mysqld options _MANDATORY_ for correct opration of the cluster
##
[mysqld]
server-id=1
log_bin=mysql-bin
binlog_format=ROW       #开启binlog日志
expire_logs_days=7

log-error=/var/log/mysqld.log
# (This must be substituted by wsrep_format)
# Currently only InnoDB storage engine is supported
default-storage-engine=innodb
sync_binlog             = 1            #二进制日志(binary log)同步到磁盘的频率
innodb_flush_log_at_trx_commit = 1     #每次事务提交将日志缓冲区写入log file,并同时flush到磁盘。




配置好脚本文件后使用service命令启动mysqld服务,mysqld是数据库程序的服务名称(一般来讲,服务器上后缀为d的都是daemon进程),再利用chkconfig命令将mysqld加入到开机自启

service mysqld start
chkconfig mysqld on

将日志文件授权给组\用户

chown -R mysql:mysql  /var/log/mysqld.log

设置环境变量

打开并新建文件mysql.sh
vim /etc/profile.d/mysql.sh
export PATH=$PATH:/usr/local/app/mysql/bin/

chmod 0777 /etc/profile.d/mysql.sh
source mysql.sh

在这里插入图片描述

mysql.sh内容

export PATH=$PATH:/usr/local/app/mysql/bin/

运行MariaDB初始化脚本

[root@localhost mysql]# ./bin/mysql_secure_installation

> 以下提示:

Enter current password for root (enter for none):     输入当前root密码(没有输入)

Set root password? [Y/n]     设置root密码?(是/否)

New password:    输入新root密码

Re-enter new password:        确认输入root密码

Password updated successfully!         密码更新成功

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

默认情况下,MariaDB安装有一个匿名用户,
允许任何人登录MariaDB而他们无需创建用户帐户。
这个目的是只用于测试,安装去更平缓一些。
你应该进入前删除它们生产环境。

Remove anonymous users? [Y/n]         删除匿名用户?(是/否)

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

通常情况下,root只应允许从localhost连接。
这确保其他用户无法从网络猜测root密码。

Disallow root login remotely? [Y/n]     不允许root登录远程?(是/否)

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

默认情况下,MariaDB提供了一个名为“测试”的数据库,任何人都可以访问。
这也只用于测试,在进入生产环境之前应该被删除。

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

重新加载权限表将确保所有到目前为止所做的更改将立即生效。

Reload privilege tables now? [Y/n]      现在重新加载权限表(是/否)

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

全部完成!如果你已经完成了以上步骤,MariaDB安装现在应该安全。

Thanks for using MariaDB!

感谢使用MariaDB!

查看log_bin是否开启

show variables like 'log_bin';

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cLXyTFR6-1655181828048)(C:\Users\luffy037\OneDrive\Typora图片\image-20211014164744809.png)]

区分表名大小写

lower_case_table_names = 0

不区分表名大小写

lower_case_table_names = 1

索引太长

my.cnf配置中添加

innodb_large_prefix=ON

字段太多

my.cnf配置中添加

innodb_file_per_table
innodb_file_format = Barracuda
innodb_strict_mode = 0


查看所有表

show tables;

查看表结构

use mysql;

describe user;

查看用户和远程主机

select host,user,password from user;

设置远程登录

方式一
update user set host = '%' where user = 'root';
方式二
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 
'root' WITH GRANT OPTION; 

用户权限查看

show grants for 'canal'@'%';

1、查看mysql数据库中的所有用户:

mysql> SELECT DISTINCT CONCAT(‘User: ‘’’,user,‘’‘@’‘’,host,‘’‘;’) AS query FROM mysql.user;

2、查看数据库中具体某个用户的权限:

mysql> show grants for ‘root’@‘localhost’;

或者

mysql> select * from mysql.user where user=‘root’ \G;

3、查看user表的表结构。需要具体的项可以根据表的结构来查询。

mysql> desc mysql.user;

4、修改用户权限:

mysql> GRANT ALL ON . TO 用户名@127.0.0.1 WITH GRANT OPTION;

刷新权限

FLUSH PRIVILEGES; 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

源码离线安装mariadb 的相关文章

随机推荐

  • 探索Android中的Parcel机制(下)

    上一篇中我们透过源码看到了 Parcel 背后的机制 xff0c 本质上把它当成一个 Serialize 就可以了 xff0c 只是它是在内存中完成的序列化和反序列化 xff0c 利用的是连续的内存空间 xff0c 因此会更加高效 我们接下
  • Caused by: java.lang.UnsupportedClassVersionError: Unsupported major.minor version 52.0 (无法载入的.类

    Caused by java lang UnsupportedClassVersionError com iov common crud node TPSAlipayConfig Unsupported major minor versio
  • ubuntu18 buildroot make xconfig make gconfig faile

    make xconfig sudo apt get install qttools5 dev make gconfig sudo apt get install libglade2 dev
  • qt5的configure选项说明

    一 配置选项查看及初步解释 通过下面命令查看都有哪一些编译配置选项 span class token punctuation span span class token operator span configure span class
  • qt build

    QT笔记 嵌入式QT交叉编译与移植 含OpenGL ES2 https blog csdn net weixin 40293570 article details 117731268
  • OpenGL之gult/freeglut/glew/glfw/glad的联系与区别

    转 https blog csdn net libaineu2004 article details 105879521 转 https blog csdn net qq 40565033 article details 107715956
  • linux arm fdisk, 对未使用emmc分区扩容

    yocto编译后的wic镜像 xff0c 在刷机后 xff0c 仍有很大部分emmc未使用 xff0c 下面将未使用的emmc扩展到文件系统挂载分区 root 64 imx8dxmek df h Filesystem Size Used A
  • Shell脚本 EOF使用

    前言 xff1a EOF是End Of File的缩写 xff0c 表示自定义终止符 既然自定义 xff0c 那么EOF就不是固定的 xff0c 可以随意设置别名 xff0c 意思是把内容当作标准输入传给程序 xff0c Linux中按Ct
  • matlab之将视频逐帧保存为图片

    clc clear all close all 将视频逐帧保存为jpg图片 obj 61 VideoReader 39 F mh rgb avi 39 输入视频位置 numFrames 61 obj NumberOfFrames 帧的总数
  • 同步锁

    线程和进程 xff1a 几乎所有的操作系统都支持进程的概念 xff0c 所有运行中的任务通常对应一个进程 xff08 Process xff09 当一个程序 进入内存运行时 xff0c 即变成一个进程 而一个线程中又包含多个进程 多线程的问
  • spring容器和SpringMVC容器的区别

    说起spring容器和SpringMVC容器 xff0c 很多刚接触spring框架的同志都有点懵 xff0c 甚至是一头雾水 xff0c 分不清楚两者的关系和区别 xff0c 包括本人也是 xff0c 因此还在网上找个不少资料 这俩容器呢
  • 解决JavaWeb中文乱码问题

    解决JavaWeb的中文乱码 在日常的Java项目开发中 xff0c 乱码成了程序员必经的一道坎 乱码的缘故很好理解 xff0c 就是编码格式和解码格式不一致 xff0c JVM在编译的时候是由于 Web 容器使用了ISO 8859 1的编
  • 敏捷之伤——燃尽图

    燃尽图 xff08 burn down chart xff09 是在项目完成之前 xff0c 对需要完成的工作的一种可视化表示 燃尽图有一个Y轴 xff08 工作 xff09 和X轴 xff08 时间 xff09 理想情况下 xff0c 该
  • SQL Server查询、限制返回行数

    我们在日常开发中 xff0c 经常涉及到分页查询 特别是和页面进行交互 xff0c 分页查询已是家常便饭 现在很多的jq插件都会有分页的模块 xff0c 可以在页面上将数据更好的呈现给用户 xff0c 使得用户拥有更好的体验 像我们熟悉的有
  • mybatis

    我们在做SSM项目的时候 xff0c mybatis是其中的一部分 xff0c 是最后一步也是最重要的一步 xff0c 因为很多时候我们都是为了对数据库进行改动 前几天我在复习mybatis的时候 xff0c 就把一些可能会踩到的坑都碰到了
  • 浅谈yaml

    YAML 是 YAML Ain t a Markup Language xff08 YAML 不是一种标记语言 xff09 的递归缩写 在开发的这种语言时 xff0c YAML 的意思其实是 xff1a Yet Another Markup
  • 跨域处理(CORS)

    首先 xff0c 来了解什么是跨域 xff1f 出于安全性 xff0c 浏览器限制脚本内 xff08 多数情况指ajax xff09 发起的跨源HTTP请求 这意味着使用这些API的 Web应用程序只能从加载应用程序的同一个域请求HTTP资
  • java 文件上传

    Java的件上传有很多种实现方式 xff0c 原生的java程序使用的都是HttpServletRequest来接收前台的文件数据 xff0c 然后通过file进行转换等等来实现的 本文章是使用springboot来实现文件上传的功能 xf
  • linux系统上安装JDK8

    作者 xff1a ChenZhen 博客地址 xff1a https www chenzhen space 版权 xff1a 本文为博主 ChenZhen 的原创文章 xff0c 本文版权归作者所有 xff0c 转载请附上原文出处链接及本声
  • 源码离线安装mariadb

    源码离线安装mariadb 卸载系统自带mariadb libs 使用下面的命令检查是否安装有MySQL MariaDB rpm qa grep mariadb rpm e mariadb libs 5 5 68 1 el7 x86 64