mysql数据库的安装

实战:rpm包安装

1、yum安装

centos6上yum install mysql-server

rpm -ql mysql-server

/etc/rc.d/init.d/mysqld  服务名(服务脚本的名称)

/usr/libexec/mysqld  数据库的主程序(二进制的程序路径与平时看到的二进制程序路径不一样)

/var/lib/mysql  存放用户数据的数据库所在的目录,将来存放大量的用户数据

/var/log/mysqld.log     mysql日志

chkconfig mysqld on  设为开机启动

service mysqld start  启动mysqld服务

ss -ntul 查看3306端口是否打开

ls /var/lib/mysql/  第一次启动的时候会自动生成数据库文件,如图

mysql有一个专门的客户端工具,就是mysql

which mysql  显示/usr/bin/mysql

rpm -qf /usr/bin/mysql  查看mysql命令来自于哪个包,显示:

mysql-5.1.73-8.el6_8.x86_64  这是客户端工具包

在centos6命令行输入mysql

下列这些都是客户端命令,不需要加分号!

?         (\?) Synonym for `help’.

clear     (\c) Clear the current input statement.

connect   (\r) Reconnect to the server. Optional arguments are db and host.

delimiter (\d) Set statement delimiter.

edit      (\e) Edit command with $EDITOR.

ego       (\G) Send command to mysql server, display result vertically.

exit      (\q) 退出mysql数据库.

go        (\g) Send command to mysql server.

help      (\h) Display this help.

nopager   (\n) Disable pager, print to stdout.

notee     (\t) Don’t write into outfile.

pager     (\P) Set PAGER [to_pager]. Print the query results via PAGER.

print     (\p) Print current command.

prompt    (\R) 更改mysql提示信息,即更改提示符!prompt \u@[\D] \r:\m:\s ->

man mysql

vim /etc/my.cnf.d/mysql-clients.cnf

或者vim /etc/profile.d/mysql.sh

export MYSQL_PS1=”(\u@\h) [\d]> “定义为全局变量也可以!source或者.下生效

quit      (\q) 退出mysql数据库

rehash    (\#) Rebuild completion hash.

source    (\.) 执行SQL脚本,后面跟文件作为参数

status    (\s)  得到系统的状态信息

system    (\!)  在mysql里能执行shell命令

tee       (\T) Set outfile [to_outfile]. Append everything into given outfile.

use       (\u)  切换数据库,use后面跟数据库的名字

charset   (\C) Switch to another charset. Might be needed for processing binlog

mysql> show databases;查看当前系统中所有的数据库列表,显示

有三个数据库,每个数据库里又可以存放若干张表。

数据库连接时用的用户名,这个名字千万别和linux的用户名混淆,root@localhost可不是linux用户,是mysql数据库用户的自身账号,在mysql数据库中也有一个账号默认也叫root,这个root就是mysql数据库的管理员。@后面的代表主机名,指的是在mysql数据库中,root用户在localhost主机上登陆

mysql> status

在centos7上yum install mariadb-server -y

mariadb-server 服务器端包   mariadb  客户端包

rpm -ql mariadb-server

/usr/lib/systemd/system/mariadb.service 服务名

/usr/libexec/mysqld  二进制主程序路径

systemctl start mariadb  启动服务

ss -ntul 查看端口是否打开

在命令行输入mysql

su – liu 切换到普通用户

在命令行输入mysql

drop database test; 删除test库

drop tables  删除表

create database testdb;  创建testdb数据库

为什么liu用户能对mysql数据库进行删减,这也太不安全了,实际上,登陆mysql数据库时如果不输入用户密码时,默认是用mysql的root用户进行登陆。

为了加强安全,通常将root@localhost加口令!

而且如果

user表中存放的是当前在mysql数据库中的用户信息,显示内容太多

显示如下

所以mysql数据库刚刚装好的时候默认是不安全的,因此要做一些方法增强安全性!

要实现这个功能,目前不需要掌握太复杂的语法,只需要跑一个脚本即可!即

mysql_secure_installation,这个脚本是系统自带的脚本

which mysql_secure_installation 显示/usr/bin/mysql_secure_installation

rpm -qf /usr/bin/mysql_secure_installation显示

mariadb-server-5.5.56-2.el7.x86_64

在命令行输入mysql_secure_installation

 

设置完以后,再在命令行直接输入mysql就不能直接登陆了,如图

注意:mysql用户账号由两部分组成:’USERNAME’@’HOST’,上图中是四个账号!host代表你从哪台电脑上登陆。如果host写成192.168.30.6,意味着我可以坐在192.168.30.6主机上远程的用mysql数据库以root账号的身份来登陆!默认是不允许远程登陆的!

在centos6上通过远程连接centos7上的mysql数据库,可以联吗?

说明不可以连,原因是在centos7上mysql数据库根本没有授权centos6可以连!

 

实战:以mariadb为例,在官网(www.mariadb.org)上下载较新的rpm包进行安装!

登陆www.mariadb.org网站—Download—Download—

vim /etc/yum.repos.d/base.repo 修改yum仓库

光盘里带的是mariadb5.5,而自己配的yum仓库里面是mariadb10.2,如果这两个仓库同时都是开启状态,默认会下载哪一个版本?答:最新版本!

yum install mariadb-server

 

实战:在centos7.4上二进制安装mariadb-10.2.15-linux-x86_64.tar.gz过程

二进制安装指的是人家都给你编译好了,打包到一个tar文件里面,你把它下载下来解包,解包解到哪去要看人家编译的时候指定在哪,你就往哪解压缩,解完以后还要相应的配些东西。

第0步:下载二进制源码

www.mariadb.org—Download— Download—

下载后

rz 将二进制包传到centos7.4上

第一步:检查环境,iptables、selinux、mariadb-server、mysql-server,如果有老版本卸载!

第二步:下载包

第三步:

useradd -r -d /app/mysqldb -s /sbin/nologin mysql 创建mysql用户,并指定家目录是/data/mysqldb,用来存放用户数据的。

 

由于二进制文件是已经被别人编译过的,那么解包的时候就要将文件解到编译时指定的目录下,所以要搞清楚人家编译的时候它的路径在哪,怎么查?

tar -xvf mariadb-10.2.15-linux-x86_64.tar.gz -C /usr/local/  解包

cd /usr/local/

ln -s mariadb-10.2.15-linux-x86_64 mysql 创建软链接

chown -R root:root mysql  将mysql目录及目录下的所有文件的所有者、所属组改为root

echo PATH=/usr/local/mysql/bin:$PATH>/etc/profile.d/mysql.sh修改环境变量

. /etc/profile.d/mysql.sh  立即生效

第四步:创建逻辑卷,作为存放用户数据

在虚拟机上加一块200G硬盘,将整块硬盘作为逻辑卷

echo “- – -” > /sys/class/scsi_host/host0/scan

pvcreate /dev/sdb  创建物理卷

vgcreate vg0 /dev/sdb 创建卷组

lvcreate -n lv_mysql -l 100%FREE vg0 创建逻辑卷,名字是lv_mysql

mkfs.xfs /dev/vg0/lv_mysql  创建文件系统

vim /etc/fstab   将逻辑卷挂载到/app下

mount -a  挂载

mkdir /app/mysqldb

chown mysql:mysql /app/mysqldb  将mysqldb目录的所有者和所属组改成mysql

chmod 770 /app/mysqldb/  修改mysqldb目录的权限

需要注意的是:现在有两个文件夹,/usr/local/mysql这个文件夹是数据库的二进制程序放的位置,而/app/mysqldb放的是用户的数据的目录。

第五步:生成默认数据库,否则无法启动服务,生成的方法就是调用一个脚本

调用脚本的时候一定要进入到/usr/local/mysql目录下  cd /usr/local/mysql

切记:调用该脚本的时候必须只能在/usr/local/mysql目录下,不能进入到scripts目录下使用该脚本,因为该脚本还调用了/usr/local/mysql目录下的其他文件!

第五步:修改配置文件,告诉二进制程序数据库文件是放在/app/mysqldb下

配置文件就在解包的目录下,即/usr/local/mysql/support-files目录下,有好几个模板,按需求进行选择

cp /etc/my.cnf{,.bak}  将原/etc/my.cnf文件备份

cp /usr/local/mysql/support-files/my-huge.cnf  /etc/my.cnf覆盖原配置文件

注:

vim /etc/my.cnf

第六步:

复制解包中自带的服务脚本

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld -a

chkconfig –add mysqld 将mysqld服务加入到服务列表中

chkconfig –list

systemctl start mysqld 启动mysqld服务

ss -ntul

说明服务正常启动!

mysql_secure_installation  设置安全策略

/usr/local/mysql/bin/mysqld –print-defaults 查看mysqld主程序的默认设置

 

老师总结:

 

源码编译安装mariadb

 安装包

yum install bison bison-devel zlib-devel libcurl-devel libarchive-devel boost-devel gcc gcc-c++ cmake libevent-devel gnutls-devel libaio-devel openssl-devel ncurses-devel libxml2-devel

 做准备用户和数据目录

mkdir /data

useradd –r –s /bin/false –m –d /data/mysqldb/ mysql

tar xvf mariadb-10.2.12.tar.gz

 cmake 编译安装

cd mariadb-10.2.12/

编译选项:

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

 

源码编译安装mariadb

cmake . \

-DCMAKE_INSTALL_PREFIX=/app/mysql \   指定应用程序路径

-DMYSQL_DATADIR=/data/mysqldb/ \      指定数据库路径

-DSYSCONFDIR=/etc \                   配置文件

-DMYSQL_USER=mysql \                  用户名

-DWITH_INNOBASE_STORAGE_ENGINE=1 \  存储引擎

-DWITH_ARCHIVE_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

-DWITH_PARTITION_STORAGE_ENGINE=1 \

-DWITHOUT_MROONGA_STORAGE_ENGINE=1 \

-DWITH_DEBUG=0 \

-DWITH_READLINE=1 \

-DWITH_SSL=system \

-DWITH_ZLIB=system \

-DWITH_LIBWRAP=0 \

-DENABLED_LOCAL_INFILE=1 \

-DMYSQL_UNIX_ADDR=/app/mysql/mysql.sock \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci

make && make install

 

源码编译安装mariadb

 准备环境变量

echo ‘PATH=/app/mysql/bin:$PATH’ >  /etc/profile.d/mysql.sh

. /etc/profile.d/mysql.sh

 生成数据库文件

cd /app/mysql/

scripts/mysql_install_db –datadir=/data/mysqldb/ –user=mysql

 准备配置文件

cp /app/mysql/support-files/my-huge.cnf /etc/my.cnf

 准备启动脚本

cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld

 启动服务

chkconfig –add mysqld ;service mysqld start

 

例如:使用rpm包安装好mariadb服务后,如果我想将数据库存放的路径进行修改,如何实现?

vim /etc/my.cnf.d/server.cnf

[musqld]

datadir=/data/mysql

mkdir /data/mysql -pv

chown mysql:mysql /data/mysql

mysql_install_db –datadir=/data/mysql –user=mysql

systemctl start mariadb即可!

 

实战:源码编译安装

rz  将源码上传到centos7.4系统中

第一步:安装所需包

yum install bison bison-devel zlib-devel libcurl-devel libarchive-devel boost-devel gcc gcc-c++ cmake libevent-devel gnutls-devel libaio-devel openssl-devel ncurses-devel libxml2-devel

第二步:

useradd -r -s /sbin/nologin mysql  创建用户

tar -xvf mariadb-10.2.15.tar.gz   解包

mkdir -pv /app/mysql

chown mysql:mysql /app/mysql

mkdir -pv /data/mysqldb

第三步:编译

cd mariadb-10.2.15

cmake . \

-DCMAKE_INSTALL_PREFIX=/app/mysql \

-DMYSQL_DATADIR=/data/mysqldb/ \

-DSYSCONFDIR=/etc \

-DMYSQL_USER=mysql \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_ARCHIVE_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

-DWITH_PARTITION_STORAGE_ENGINE=1 \

-DWITHOUT_MROONGA_STORAGE_ENGINE=1 \

-DWITH_DEBUG=0 \

-DWITH_READLINE=1 \

-DWITH_SSL=system \

-DWITH_ZLIB=system \

-DWITH_LIBWRAP=0 \

-DENABLED_LOCAL_INFILE=1 \

-DMYSQL_UNIX_ADDR=/app/mysql/mysql.sock \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci

make -j 8 && make install

第四步:后续与二进制安装步骤一样。

echo PATH=/app/mysql/bin:$PATH > /etc/profile.d/mysql.sh

. /etc/profile.d/mysql.sh

cd /app/mysql/

生成数据库:

yum安装默认放在/usr/bin下

cp /app/mysql/support-files/my-huge.cnf /etc/my.cnf

vim /etc/my.cnf

cp support-files/mysql.server /etc/init.d/mysqld  准备服务脚本

setfacl -m u:mysql:rwx /app/mysql/  设置mysql这个用户对/app/mysql目录有读写执行权限

service mysqld start 启动服务

 

实战:实现多实例,参考yum安装的包或者二进制安装的包都可以做多实例,我以yum安装的包为例

yum install mariadb-server -y

rpm -ql mariadb-server

/usr/bin/mysqld_multi 这个程序本身就是用来实现多实例的,但条件是必须是同一个版本,不能做不同版本之间的多实例,灵活性较差!

每个实例有自己的数据库路径、有各自的端口号

第一步:

#以端口号为文件夹名,每个实例都有一套各自的配置文件

mkdir /mysqldb/{3306,3307,3308}/{etc,socket,pid,log,data} -pv

由于是yum安装的,会自动生成mysql这个用户

chown -R mysql:mysql /mysqldb  将/mysqldb这个目录及目录下的所有文件的所有者和所属组都改成mysql,mysql用户就对/mysqldb这个目录具有完全控制的权限。

第二步:生成各自的配置文件,配置文件放到各自的配置文件目录下

cp /etc/my.cnf /mysqldb/3306/etc/ -a

cp /etc/my.cnf /mysqldb/3307/etc/ -a

cp /etc/my.cnf /mysqldb/3308/etc/ -a

vim /mysqldb/3306/etc/my.cnf

vim /mysqldb/3307/etc/my.cnf

vim /mysqldb/3308/etc/my.cnf

第三步:为各自的实例编制启动脚本 脚本内容如下(脚本放在D:\linux面授班课件\课堂笔记\课堂笔记\做mysql多实例时用到的脚本)

cp mysqld /mysqldb/3306

cp mysqld /mysqldb/3307

cp mysqld /mysqldb/3308

vim /mysqldb/3307/mysqld

vim /mysqldb/3308/mysqld

chmod +x /mysqldb/3306/mysqld   加执行权限

chmod +x /mysqldb/3307/mysqld

chmod +x /mysqldb/3308/mysqld

chmod 700 /mysqldb/3306/mysqld  修改权限

chmod 700 /mysqldb/3307/mysqld

chmod 700 /mysqldb/3308/mysqld

第四步:启动脚本

/mysqldb/3306/mysqld start   启动3306的mysqld服务

/mysqldb/3307/mysqld start   启动3307的mysqld服务

/mysqldb/3308/mysqld start   启动3308的mysqld服务

tree /mysqldb/3308

mysql -S /mysqldb/3308/socket/mysql.sock  连接3308的mysql数据库

第五步:现在各个实例都是没有口令的,随便登陆,这样很不安全,可以加口令,方法:

修改的口令生效

这块加完口令后,记得将启动脚本中也要添加口令,如图

vim /mysqldb/3308/mysqld

此时连接数据库要mysql -S /mysqldb/3308/socket/mysql.sock -uroot -pcentos

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/100834

(0)
柳宝玉柳宝玉
上一篇 2018-06-11
下一篇 2018-06-11

相关推荐

  • CentOS7.4环境安装python

    Linux学习过程中的python环境搭建

    2018-06-05
  • DNS服务

    DNS服务 为什么要使用DNS? 为了把FQDN解析成IP地址。 FQDN    全称域名 www.magedu.com         全称域名由主机名和域名组成 www     主机名(hostname),或者别名 magedu.com      域名(domain)   /etc/hosts       分散式的解决方案 NIS       …

    Linux笔记 2018-06-03
  • 权限

    chmod 更改权限 语法 1 who 对谁操作 opt做什么操作 per 跟什么权限 跟文件 who u g o a opt +增加 -减掉 =覆盖 per rwx reset 重复系统 文本文件 r 读 打开 w 改 x 执行程序 chown 更改所有者 chgrp 更改所属组 chmod who (u) opt (g)per(o) file文件 绿色有…

    Linux笔记 2018-04-08
  • 脚本练习

    1、每周的工作日1:30,将/etc备份至/backup目录中,保存的文件名称格式为“etcbak-yyyy-mm-dd-HH.tar.xz”,其中日期是前一天的时间tar Jcf /etc/ /data/ectbak-`date -d “-1 day” +%F-%H`.tar.xz30 1 * * 1-5 /root/Myscrip…

    Linux笔记 2018-05-08
  • 磁盘存储和文件系统

    磁盘存储和文件系统: 磁盘设备的文件命名:/dev/dev_file虚拟磁盘:/dev/vd磁盘标识: /dev/sda,/dev/sdb……磁盘分区:/dev/sda1,/dev/sdb2…… chs 磁盘sector 扇区 512bytestrack 磁道head 磁头cylinder柱面 使用磁盘: 分区创建文件系统:格式化挂载:分配目录名 hexdu…

    Linux笔记 2018-05-20