MariaDB 和 MySQL 之间存在紧密的关系。
起源:MariaDB 最初是作为 MySQL 的一个分支而创建的。它的初始目标是保持与 MySQL 的兼容性,并提供额外的功能和性能改进。
共同的代码基础:MariaDB 使用了 MySQL 的代码基础,并在此基础上进行了修改和扩展。因此,MariaDB 和 MySQL 在语法和功能上有很大的相似性,许多 MySQL 的应用程序可以直接在 MariaDB 上运行。
开发和社区:MariaDB 有自己的开发团队和社区,他们致力于对 MariaDB 进行改进、维护和支持。尽管有许多共享的开发者和贡献者,但现在 MariaDB 和 MySQL 已经成为两个相对独立的项目。
功能增强:MariaDB 在保持与 MySQL 兼容的同时,也添加了一些新的功能和改进。例如,它支持更多的存储引擎,如 XtraDB(一个 InnoDB 的分支)、Aria、MyRocks 等,以及其他性能和安全性的增强。
开源社区:MariaDB 和 MySQL 都是开源的,拥有活跃的社区支持和贡献者。这些社区致力于解决问题、提供支持、发布更新版本,并推动数据库的发展。
尽管 MariaDB 是作为 MySQL 的一个分支而起步的,但随着时间的推移,它已经发展成为一个独立的数据库管理系统,并在许多方面超越了 MySQL。然而,两者之间仍然存在相似性和兼容性,使得用户能够在 MariaDB 和 MySQL 之间进行无缝迁移和互操作。
问题
前面说了些废话,在centos7中安装mariadb时,会默认版本为5.5或5.6的,这会导致一个问题,在建表时
createtime timestamp default current_timestamp,
updatetime timestamp default current_timestamp,
以上两个会冲突,也就是说这种格式在老版本中只能存在一个,当然有一种简单的方式解决,如下:
createtime timestamp default '0000-00-00 00:00:00' ,
updatetime timestamp default current_timestamp,
为了防止还有其他问题,这里建议直接将mariadb升级到10,以绝后患。
1.旧版本删除
先查出旧版文件,旧版必须得删除,不然麻烦很多
rpm -qa | grep mariadb
再逐个删除(文件名可能不同,按自己的来)
yum remove mariadb-server-5.5.68-1.el7_5.x86_64
yum remove mariadb-5.5.68-1.el7_5.x86_64
yum remove mariadb-libs-5.5.68-1.el7_5.x86_64
2.创建MariaDB.repo文件
在目录 /etc/yum.repos.d/ 下创建文件 MariaDB.repo
vim /etc/yum.repos.d/MariaDB.repo
将以下代码复制进去(这里用了阿里云镜像,不是国外服务器,原网站无法用)
[mariadb]
name = MariaDB
baseurl = http://mirrors.aliyun.com/mariadb/yum/10.3/centos7-amd64/
gpgkey = http://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck = 1
按5次(esc ) + (:wq) + 按下(enter) 保存文档并返回
3.安装mariadb10
sudo yum install MariaDB-server MariaDB-client
4.初始化配置
启动MariaDB
systemctl start mariadb
开启自启动
systemctl enable mariadb
查看状态
systemctl status mariadb
5.设置密码
进入密码设置页
mysql_secure_installation
首次没有密码,直接多次回车,跳过以下提示
Enter current password for root (enter for none):<–初次运行直接回车
设置密码
Set root password? [Y/n] <– 是否设置root用户密码,输入y并回车或直接回车
Y
设置密码时,是不可见的,直接盲打,然后回车就行
New password:
Re-enter new password:
Remove anonymous users? [Y/n]
是否删除匿名用户,Y,回车
Disallow root login remotely? [Y/n]
是否禁止root远程登录,N,回车,
Remove test database and access to it? [Y/n]
是否删除test数据库,N,回车
Reload privilege tables now? [Y/n]
是否重新加载权限表,直接回车
6.测试
-u 后接用户名,这里是root
-p 后接密码,这里是123456
mysql -uroot -p123456
7.其他
配置字符集
vi /etc/my.cnf
文件中写入以下
[mysqld]
init_connect='SET collation_connection = utf8_general_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_general_ci
skip-character-set-client-handshake
vi /etc/my.cnf.d/client.cnf
文件中写入以下
default-character-set=utf8
vi /etc/my.cnf.d/mysql-clients.cnf
文件中写如以下
default-character-set=utf8
重启
systemctl restart mariadb
验证
mysql> show variables like "%character%";show variables like "%collation%";