Linux中数据库的安装和配置(MySQL与Maria DB)

时间:2021-05-18 01:42:03

目录

MySQL和Maria DB的介绍

MySQL和Maria DB的安装

yum源安装MySQL(Centos6.5+Mysql5.1)

源码包安装MySQL

yum源安装Maria DB

源码包安装Maria DB

数据库的配置文件

数据库的配置

数据库的初始化配置

数据库的用户管理

数据库的用户权限

配置phpMyAdmin管理数据库

MySQL数据库的安全加固

修改root用户口令

绕过权限认证,空密码登录


MySQL和Maria DB的介绍

MySQL是世界上最流行的开源数据库,是由瑞典的MySQL AB公司开发,目前属于Oracle公司所有。端口号:tcp / 3306

MySQL的优点:MySQL是免费的,并且MySQL可以支持多种平台,从小型的WEB应用到大型的企业应用,MySQL都能经济有效的支撑。 MySQL支持标准的结构化查询语言 MySQL为客户端提供了不同的程序接口和链接库,如C、C++、Java、PHP等

Maria DB:MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。MariaDB继承了MySQL的所有特点,并且二者之间在许多功能上也是兼容的,同时MariaDB还进行了大量的改进。在存储引擎方面,Maria DB使用XtraDB来代替MySQL的InnoDB。MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎。

Maria DB的历史:2008年 Sun Microsystems以10亿美元收购MySQL AB这家开发并拥有MySQL数据库的公司。2011年Oracle收购了SUN Microsystems从而将MySQL也一并收归旗下。 虽然Oracle没有中止MySQL项目,但从MySQL项目的后继开发进程来看,MySQL存在巨大的闭源风险。开源社区采用分支的方式避免这种风险,于是创建了MySQL的新分支MariaDB。

Maria DB的版本:MariaDB有两个系列的版本,一个是5.x版,由于MariaDB的历史原因,需要与MySQL保持兼容,因此这个版本在接口上与MySQL是相通的。 第二个是自2012年开始发行的10.X版,10.0.X.以MySQL5.5为基础,加上5.6版本中的功能以及自行开发的功能组合而成。现在的情况是,自10.x版开始,MariaDB将慢慢彻底与Mysql分道扬镳,从而形成一套新的开源数据库产品。

Maria DB包的命名(和MySQL类似):

MariaDB-5.1.71:

  • 第1个数字 5 是主版本号,相同主版本号具有相同的文件格式。
  • 第2个数字 1 是发行级别,主版本号和发行级别组合到一起便构成了发行序列号。
  • 第3个数字 71 是在此发行系列的版本号,随每个新发版本递增

MySQL和Maria DB的安装

安装MySQL,目前Centos7以上的版本,yum源都是提供的Maria DB的包,所以Centos7以上的版本,要想安装MySQL,只能使用源码包安装。Centos7以下的版本,yum源都是提供的MySQL5.1版本的包,所以如果想安装更高MySQL版本的包的话,也得需要源码包安装。

安装Maria DB的话,可以使用yum源或者源码包安装都可以,使用源码包安装定制性更强。

注:虽然在Centos7及以上的版本中,mysql更改为MariaDB了,但是许多工具仍然是以 mysql 命名,是为了保持兼容性。

yum源安装MySQL(Centos6.5+Mysql5.1)

  1. 安装mysql相关包:yum   -y   install    mysql-server
  2. 开启mysqld服务: service   mysqld   start
  3. 登录: mysql

源码包安装MySQL

  • 创建mysql的数据目录: mkdir   -p   /data/mysql
  • 添加mysql用户: useradd   -M   -s  /sbin/nologin   mysql
  • 修改数据库目录属主和属组: chown  -R  mysql:mysql   /data/mysql
  • 安装cmake及其依赖: yum  -y  install   cmake   gcc*   ncurses-devel
  • 下载mysql源码包:wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.49.tar.gz
  • 解压,然后进入其解压包内:  tar  -xzvf  mysql-5.5.49.tar.gz
  • cmake编译:
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/data/mysql -DWITH_EXTRA_CHARSETS=all -DWITH_READLINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_TCP_PORT=3306 -DDEFAULT_COLLATION=utf8_general_ci
  • 安装:  make && make install
  • 修改安装目录属主和属组: chown  -R   mysql:mysql    /usr/local/mysql
  • 配置文件的修改: vim  /etc/my.cnf
[mysqld]
datadir=/data/mysql //修改成我们自己创建的数据库目录
socket=/tmp/mysql.sock //将这个修改,因为在 /usr/local/mysql/support-files/ 目录中的配置文件(my-small/medium/large.cnf)中指定了 socket 的目录为 /tmp/mysql.sock [mysqld_safe]
log-error=/data/mysql/mysql.log //修改成我们自己创建的数据库目录,文件名也可以自己定义
pid-file=/data/mysql/mysql.pid //修改成我们自己创建的数据库目录,文件名也可以自己定义 !includedir /etc/my.cnf.d
  • 初始化mysql,进入 /usr/local/mysql/scripts/ 目录下:./mysql_install_db  --user=mysql  --basedir=/usr/local/mysql/   --datadir=/data/mysql/
  • 启动MySQL: service  mysqld  start   (cp   /usr/local/mysql/support-files/mysql.server    /etc/init.d/mysqld)
  • 登录mysql: mysql   (为了使得能在任意位置执行,执行命令:ln  -s  /usr/local/mysql/bin/*    /usr/local/bin/)

yum源安装Maria DB

  1. 安装mariadb相关包:yum   -y   install   mariadb-server
  2. 开启mariadb服务: systemctl    start    mariadb
  3. 登录:  mysql

源码包安装Maria DB

首先在安装Maria DB之前,先安装好 cmake。因为Maria DB的源码包是使用 cmake 工具编译的。而安装 cmake 工具前,先安装好 cmake的依赖包: readline-devel 、zlib-devel 、openssl-devel 、libaio-devel 。

  • 安装cmake依赖包:yum -y install readline-devel  zlib-devel  openssl-devel  libaio-devel
  • 安装 cmake 工具: yum  -y install  cmake

因为我们需要对Maria DB进行定制,所以在安装Maria DB之前先做好准备:

  • 创建数据库存放目录: mkdir  -p   /data/mariadb
  • 创建 mariadb 用户: useradd -M  -s   /sbin/nologin    mysql
  • 修改数据库目录的属主和属组: chown  -R  mysql:mysql   /data/mariadb

做好了准备工作之后,我们就可以进行安装了。解压Marid DB压缩包,然后进入其压缩包。

cmake配置编译:

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb -DMYSQL_DATADIR=/data/mariadb -DSYSCONFDIR=/etc -DWITHOUT_TOKUDB=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STPRAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWIYH_READLINE=1 -DWIYH_SSL=system -DVITH_ZLIB=system -DWITH_LOBWRAP=0 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci

//各参数的意义
-DCMAKE_INSTALL_PREFIX是指定安装的位置, 这里是/usr/local/mariadb
-DMYSQL_DATADIR是指定MySQL的数据目录,这里是/data/mariadb
-DSYSCONFDIR是指定配置文件所在的目录,一般都是/etc ,具体的配置文件是/etc/my.cnf
-DWITHOUT_TOKUDB=1这个参数一般都要设置上,表示不安装tokudb引擎,tokudb是MySQL中一款开源的存储引擎,可以管理大量数据并且有一些新的特性,这些是Innodb所不具备的,这里之所以不安装,是因为一般计算机默认是没有Percona Server的,并且加载tokudb还要依赖jemalloc内存优化,一般开发中也是不用tokudb的,所以暂时屏蔽掉,否则在系统中找不到依赖会出现:CMake Error at storage/tokudb/PerconaFT/cmake_modules/TokuSetupCompiler.cmake:179 (message)这样的错误
然后后面那些参数都是可选的,可以加也可以不加,最后的编码建议设置一下,所以编译指令也可以简化成下面这样:
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb -DMYSQL_DATADIR=/data/mariadb -DSYSCONFDIR=/etc -DWITHOUT_TOKUDB=1 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci 注意:如果万一执行中有了错误,可以执行: rm -f CMakeCache.txt 删除编译缓存,然后重新执行指令,否则每次读取这个文件,命令修改正确也是报错
  • 编译和安装:  make  &&  make  install
  • 修改安装目录的属主和属组:chown  -R  mysql:mysql   /usr/local/mariadb
  • 进入/usr/local/mariadb/scripts目录下,初始化数据库: mysql_install_db  --datadir=/data/mariadb   --user=mariadb
  • 修改/etc/my.cnf 配置文件
datadir=/data/mariadb          //修改为我们创建的数据库目录
//socket=/var/lib/mysql/mysql.sock //如果是这样的话,开启mysqld程序的时候,会开启非常久,最后显示失败。但是进程已经在后台运行了
socket=/tmp/mysql.sock //这样的话,可以开启。但是mysql进入的时候,还要建立软链接 ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock [mysqld_safe]
log-error=/data/mariadb/mariadb.log //日志文件的路径,必须在数据库目录下
pid-file=/data/mariadb/mariadb.pid //pid文件的路径,必须在数据库目录下
  • 启动数据库: service mysqld  start  (前提是执行了该命令:cp  /usr/local/mariadb/support-files/mysql.server   /etc/init.d/mysqld)
  • 登录: mysql  (提前建立软链接:ln  -s  /tmp/mysql.sock   /var/lib/mysql/mysql.sock)

数据库的配置文件

不管是mysql还是Maria DB,都有一个默认配置文件 /etc/my.cnf  ,当我们在数据库中没有指定配置文件时,读取的是 /etc/my.cnf , 当我们在数据库中自己创建了 my.cnf  文件时 ,读取的是数据库中我们自己创建的 my.cnf  配置文件

数据库目录默认为: /var/lib/mysql

[mysqld]
datadir=/var/lib/mysql //数据库的路径
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd [mysqld_safe]
log-error=/var/log/mariadb/mariadb.log //日志文件的路径,必须在数据库目录下
pid-file=/var/run/mariadb/mariadb.pid //pid文件的路径,必须在数据库目录下 #
# include all files from the config directory
#
!includedir /etc/my.cnf.d

数据库的配置

数据库的初始化配置

数据库安装好之后,我们就需要对数据库进行一些基本的配置了。不管是MySQL还是Maria DB,数据库的配置方法都是一样的。

数据库安装好之后,root用户默认是没有密码的,我们可以设置初始密码:mysqladmin  –u  root  password

数据库的安全初始化: mysql_secure_installation

  • 为root用户设置密码 (如果之前设置了初始化密码的话,这里也可以修改,也可以不修改)
  • 删除匿名账号
  • 取消root用户远程登录
  • 删除test库和对test库的访问权限
  • 刷新授权表使修改生效

数据库的用户管理

创建用户: create   user   用户名@'ip'   identified   by   '密码'

  • create   user  tom@'localhost'  identified   by  '123456';    //创建tom用户,密码为123,只允许本地登录
  • create   user  jack@'%'  identified   by   'abc';     //创建jack用户,密码abc,允许任意ip登录

修改用户名:rename  user   原用户名@'ip'    to    新用户名

  • rename  user   tom@'localhost'   to  jack;       //将user用户重命名为jack

删除用户:drop  user   用户名@‘ip’

  • drop  user  tom@'localhost';           //删除tom用户

修改密码:set  password  for  用户名@'ip'=password('新密码');   (方法一)

                update  mysql.user  set password=password('新密码')   where  user='用户名';  (修改完之后  flush  privileges 刷新权限)

  • set  password  for  jack@'localhost'=password('123456');
  • update  mysql.user  set  password=password('123456')  where  user='jack' ;   flush   privileges;

如果忘记了root用户的密码:

  • 停止mysql服务:  service   mysqld   stop
  • 跳过授权列表:mysqld_safe  --user=mysql  --skip-grant-tables &
  • 登录: mysql  -uroot
  • 更新密码:update mysql.user set  password=password('newpassword')   where    user='root';
  • 刷新权限:mysql> flush  privileges;
  • 退出:mysql> quit
  • 然后重启mysql服务,登录即可: service  mysqld  restart ;  mysql  -uroot  -p

数据库的用户权限

权限可以分为以下四个层级:

  • 全局级别:*.*
  • 数据库级别: 数据库名.*
  • 表级别: 数据库名.表名
  • 列级别:权限(列1、列2、.....)on  数据库名.表名

全局级别的权限存放在 mysql.user表中,数据库级别的权限存放在 mysql.db 或者 mysql.host 中,表级别的权限存放在 mysql.tables_priv 中,列级别的权限存放在 mysql.columns_priv 中
查看用户权限: show  grants   for  用户名@'ip';

  • show  grants  for  tom@'localhost';

赋予用户权限: grant  权限列表  on   权限层级 to   用户@'ip'

  • grant  select,update,delete,insert  on   *.*  to   jack@'localhost';
  • grant  select,update   on   test.*  to   jack@'localhost';
  • grant  select,update   on   test.user  to   jack@'localhost';
  • grant  select(id,name) on test.user  to  jack@'localhost'
  • grant  all   on  *.*   to   jack@'192.168.10.10' identified  by  '123';        创建jack用户,密码为123,并且授予全局权限

配置phpMyAdmin管理数据库

phpmyadmin是一款利用网页图形化管理数据库的一款应用,需要php的支持。所以,需要提前配置好php的环境。

phpmyadmin的安装可以使用yum源安装或者源代码安装。

yum  -y  install  phpmyadmin  ,然后将 /usr/local/phpMyAdmin 移动到网站根目录下即可

源代码安装的话直接把解压包移动到网站根目录即可。

MySQL数据库的安全加固

修改root用户口令

#方法一
mysqladmin -u root password "newpass" 适用于root未设置密码的时候
mysqladmin -u root -p password new_pass root设置了密码后,可以使用这个命令。回车后输入旧密码即可 #方法二
当MySQL<5.7版本时
use mysql;
update user set password=PASSWORD("root_pass") where user="root";
flush privileges; 当MySQL>=5.7版本时
use mysql;
update user set authentication_string=password('root_pass') where user='root';
flush privileges; 当MySQL>=8.0时,取消了 password() 函数,所以我们这里第二步new_pass可以先用其他版本的mysql的password函数生成秘钥,然后写入。
use mysql;
update user set authentication_string=new_pass where user='root';
flush privileges;

Linux中数据库的安装和配置(MySQL与Maria DB)

Linux中数据库的安装和配置(MySQL与Maria DB)

Linux中数据库的安装和配置(MySQL与Maria DB)

Linux中数据库的安装和配置(MySQL与Maria DB)

绕过权限认证,空密码登录

在Linux环境中,当我们忘记了MySQL的密码该咋办呢?

关闭MySQL数据库进程:service mysqld stop
以不检查权限的方式启动:mysqld_safe --skip-grant-tables&
空密码登录:mysql -uroot -p
登录进去之后,然后可以按照上面的步骤修改数据库密码了。

Linux中数据库的安装和配置(MySQL与Maria DB)

相关文章:SQL语句