目录
MariaDB特性
MariaDB的安装
yum安装
二进制格式安装
修改密码
忘记登录密码:
Mysql程序
客户端程序:
服务端程序:
客户端选项
服务端配置文件
MariaDB是由Mysql的创始人麦克尔·维德纽斯主导开发,以他女儿的名字玛丽亚(Maria)命名。在centos6及之前的版本中,系统自带的是mysql,centos7中,改为mariadb。本文的环境是centos7。
MariaDB算是Mysql的分支,甲骨文公司(Oracle)收购了MySQL后,有将MySQL闭源的风险,因此开源社区采用分支的方式来避开这个风险,由开源社区维护。目的是完全兼容MySQL,包括API和命令行,成为MySQL的代替品。
1、采用插件式存储引擎,也称表类型,mysql从5.5.5开始将innoDb作为默认存储引擎。
2、单进程,多线程
3、开源
yum info mariadb-server #查看当前系统下自带的mariadb版本信息
yum install mariadb-server
如果要安装最新版本的mariadb,可以在mariadb官网中找对应版本的repo文件,添加到本机即可
repo文件链接:https://downloads.mariadb.org/mariadb/repositories/#mirror=shanghai-university
cd /etc/yum.repos.d/
vim mariadb.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
保存退出
yum clean all
yum -y install mariadb-server
mysql -uroot -p
即已经编译完成,展开至特定路径,简单配置后即可
1、检查环境
rpm -qa |grep mariadb
如果有内容输出,用yum remove 卸载即可。
2、到官网下载对应版本的二进制包,上传到系统中
下载地址:https://downloads.mariadb.org
或者直接右击上图中的包名,复制链接地址,用wget下载即可
wget https://downloads.mariadb.org/interstitial/mariadb-10.3.12/bintar-linux-x86_64/mariadb-10.3.12-linux-x86_64.tar.gz
3、创建用户和组
useradd -r -s /sbin/nologin mysql #,-s 指定shell -r表示在创建该用户的同时,创建同名的组,并加入其中。
4、创建一个安装路径,并将包解压到二进制包的默认安装路径下(上图中点击instructions查看,一般是/usr/local/)
tar -xzvf mariadb-10.2.20-linux-x86_64.tar.gz -C /usr/local/
5、给解压的包创建一个软连接,命名为mysql,或者直接将加压好的文件重命名为mysql
cd /usr/local/
ln -s mariadb-10.2.20-linux-x86_64/ mysql
(mv mariadb-10.2.20-linux-x86_64/ mysql)
chown -R mysql:mysql mysql/
6、创建存储路径
mkdir /data
chown mysql:mysql /data
chmod 770 /data #指定其他用户不能访问
扩展:如果考虑到以后数据库的存储空间不足的问题,我们可以在第6步之前,新加一块硬盘,将其作为LVM,方便以后用LVM扩容
pvcreate /dev/sdb #将sdb做成物理卷
vgcreate vg0 /dev/sdb #将其做为卷组,命名为vg0
lvcreate -n lv_mysql -l 100%FREE vg0 #-l指定逻辑卷lv的大小,100%FREE 意味着将整个逻辑卷的空间都给lv_mysql
lvs #查看
mkfs.xfs /dev/vg0/lv_mysql #格式化
blkid #查看
mkdir /data
vim /etc/fstab
/dev/vg0/lv_mysql /data xfs defaults 0 0
mount -a
df #查看
7、修改配置文件
cp /etc/my.cnf /etc/my.cnf.bak #将之前的配置文件做备份
cd /usr/local/mysql/support-files/
cp my-huge.cnf /etc/my.cnf #support-files下有很多模板的配置文件,可根据自己的生产环境来选择
注意:有些版本的包中可能没有模板配置文件,可以直接用原有的/etc/my.cnf,或者在网上下载一份即可。
vim /etc/my.cnf
[client]
port = 3306
socket = /usr/local/mysql/mysql.sock
[mysqld]
port = 3306
socket = /usr/local/mysql/mysql.sock
basedir = /usr/local/mysql
datadir = /data
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log #定义mariadb的错误日志文件路径,便于将来排错。
pid-file=/var/run/mariadb/mariadb.pid #定义mariadb的pid文件文件路径
注意:这里mysql.sock文件默认的路径是/tmp/mysql.sock,msql用户对其也是有写权限的,可不做修改,根据自己需要。但是/tmp这个目录是系统公用的临时存储点,系统会自动清理,可以给他一个新的路径,但一定要记得修改这个新路径的所有者和所属组为mysql,否则在mysqld服务启动时加载mysql.sock时会发生错误。
这里的新路径/usr/local/mysql我们在第五步已经给过权限了。
关于mysql.sock文件以及在连接数据库时出现无法连接到mysql.sock文件的问题,请参考另一篇文章:https://blog.csdn.net/keil_wang/article/details/88641735
8、创建日志文件夹
mkdir /var/log/mariadb
chown -R mysql:mysql //var/log/mariadb
9、拷贝运行脚本的范例
cp mysql.server /etc/init.d/mysqld #mysql.server也在support-files下
10、用脚本生成mysql的默认数据库(初始化)
cd /usr/local/mysql
scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data --user=mysql
ll /data #可以看到已经生成了
11、启动mysqld
/etc/init.d/mysqld start
12、进入数据库
mysql -uroot -p #进入数据库,此时密码为空直接回车即可
扩展:为了方便,将/usr/local/mysql/bin放入到PATH变量中
echo PATH=/usr/local/mysql/bin:$PATH > /etc/profile.d/mysql.sh
chmod u+x /etc/profile.d/mysql.sh #给用户写的权限
source /etc/profile.d/mysql.sh #使其生效
这样我们就不用在每次进入数据库是都得进到安装目录的bin下,可以在任何路径下直接用 mysql -uroot -p命令来直接进入数据库。
三种方法:
1、用set password命令
mysql> set password for root@localhost = password('123');
2、用mysqladmin
mysqladmin -uroot -p123456 password 123
3、用updata直接编辑user表
mysql> use mysql;
mysql> update user set authentication_string = password('123'), password_expired = 'N', password_last_changed = now() where user = 'root';
mysql> flush privileges;
注意:mysql中的账号由两部分组成
用户名@主机名 如:root@localhost
host限制此用户可以通过哪些主机来远程登陆mysql服务器
存放在mysql库的user表中
select user,host,password from user;
vim /etc/my.cnf
[mysqld]
skip-grant-tables #跳过密码验证
保存退出后,重启mysqld,再次登录直接回车进入数据库后修改新密码。改完后记得在配置文件中注释skip-grant-tables
mysql:交互式的CLI命令工具
mysqldump:备份工具,原理:基于mysql协议向mysqld发起查询请求,并将结果转换成insert等写操作语句保存到文本文件中。
mysqladmin:数据库导入工具
mysqld_safe
mysqld
mysqld_multi :多实例,如:mysql_multi --example
多实例:也就是一个软件在机器上跑多份,一份是一个实例,win中打开多个word文档就类似于多实例
-A 禁止补全
-u,--user= 用户名
-p,--password= 密码
-h,--host= 服务器主机
-P,--port= 服务器端口
-S,--socket= 指定连接socket文件路径
-D,--database= 指定默认数据库
-C,--compress= 启用压缩
-e,“SQL语句” 执行SQL语句,不用进入mysql即可执行
-V,--version 显示版本
-v,--verbose 显示详细信息
配置文件,如:/etc/my.cnf
[mysqld]
[mysqld_safe]
[mysqld_multi]
[mysql]
[musqldump]
[sever]
[client]
都是键值对的格式,
注意:mysql的配置文件中,
-和_意义相同
如有错误,敬请指正~~