CentOS较低版本使用的数据库默认为MySQL,MySQL的创始人Michael Widenius主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中,甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险.后来Michael以自己女儿的名字开发了MySQL的分支数据库MariaDB,取代MySQL成为CentOS7以来默认的数据库.
一.使用yum安装
1.使用默认的CentOS-BASE.repo安装.
非常简便的方式,CentOS7的base仓库已经使用MariaDB作为默认的数据库,通常安装CentOS7时已经安装了MariaDB.
可以使用:
rpm -q mariadb 或 systemctl status mariadb 等命令查看是否安装,或者在yum install mariadb*时会告诉你有没有安装.
如果没有安装MariaDB,直接使用命令:
yum install mariadb* 完成mariadb的安装.
如果默认源无法安装,可以考虑自行添加源或使用包安装.
2.如果源的仓库中没有MariaDB (Linux的其他发行).
这时可以配置yum,添加仓库 (以apt-get方式安装与之类似,但有不同之处)
可以看MariaDB的官方说明(文档里有支持的平台等信息):
https://mariadb.com/kb/en/library/mariadb-package-repository-setup-and-usage/
然后使用命令:
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
(在本地执行这个网站的一个shell脚本,可以直接查看这个脚本的源码,能更加清楚原理)
脚本执行完毕后,会在yum的配置文件里(CentOS7是/etc/yum.repos,其他发行会有不同)看到多了mairadb.repo仓库.
然后使用命令:
yum install mariadb即可完成安装
二.使用安装包安装
这种方法我估计一般不会用到,但是某些情况下,比如:无法访问外网的私有云计算生产环境中,可以先下载包,再用一些网络协议(ftp,sftp等)在局域网中实现put,get等copy操作.
先去官网看看:
在下载页面选择一个下载就行了
然后将源码放在/usr/local/src里,解压后的目录放在/usr/local或/opt及其子目录里,符合规范!如果你有一定的Linux管理经验,那你就知道规范的重要性了.另外如果你对Linux操作系统比较陌生,那你一定注意目录,当前目录和你要到的目录,像一些新手很容易犯这种错误.
解压:
tar -xf mariadb-10.3.8-rhel-7-x86_64-rpms.tar
如果你是一只老鸟,我相信你一定会看README,里面告诉你该把mariadb目录放在/opt中,然后这里面包含了所有的rpm,包含依赖等.
使用其中的命令:
./setup_repository
设置仓库.
然后你会看到/etc/yum.repos多了一个mariadb.repo,和之前的添加源仓库一样,差别是:此时安装包已经下载好,使用 yum install mariadb-server不再从网上下载,而是用本地的安装包.
三.配置MariaDB
安装完成后,较老版本的root密码默认为空,即输入命令 mysql -u root -p 回车后不需要输入密码,直接回车就可登陆.新版本登陆可能需要密码,如果安装过程中没有配置过密码,则默认密码在文件/var/log/mysqld.log中:
vim /var/log/mysqld.log
然后查找password关键字即可 ("/passwrod")
如果忘记密码,可以设置环境变量 MYSQLD_OPTS:
systemctl stop mariadb (首先关闭mariadb服务)
systemctl set-environment MYSQLD_OPTS="--skip-grant-tables" (跳过权限认证)
systemctl start mariadb (开启服务)
现在无需密码,mysql -u root -p回车不需要密码,直接回车即可登陆,然后以 SQL语句修改root密码,或者是UPDATE数据库mysql中的user表的相关记录即可完成修改(原理都是更新mysql中的user表中的记录,可以自己找教程"mairiadb 修改用户密码")
修改密码完成后:
systemctl stop mariadb
systemctl unset-environment MYSQLD_OPTS (使环境变量失效)
systemctl start mariadb
查看MariaDB是否开启:
systemctl status mariadb
或者
netstat -tunlp | grep 3306 (MariaDB开启3306端口)
确认开启后,现在就可以用新密码登陆了.
最后为了安全起见,将家目录里的 ".mysql_history"中的修改密码记录删除, root的家中".mysql_histroy"中记录的是root在mariadb中的历史操作.
四.除错
如果你之前安装过MySQL或其他版本MariaDB,当安装完成后,想要开启MariaDB时,可能失败.
使用命令:
systemctl status mariadb 或 journalctl -xe
可以查看除错日志,一般会告诉你清空/var/lib/mysql中的内容,然后再重新开启mariadb就可以了.
原因可能与socket连接和数据库dir有关,在/etc/my.conf中:
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
/var/lib/mysql中的文件mysql.sock,这个文件用于连接数据库(本地或TCP/IP连接),不同的数据库配置不同.同时数据保存的记录也可能有差异.所以上一数据库的/var/lib/mysql目录中的内容在现在的数据库中无法使用,导致启动失败.删除该目录内的所有内容后,再重启数据库,可将新的配置文件写入该目录,启动成功.