实战: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