centos7安装mariadb

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。

安装

sudo yum install mariadb-server mariadb

使用

mariadb数据库的相关命令是:

sudo systemctl start mariadb #启动MariaDB

sudo systemctl stop mariadb #停止MariaDB

sudo systemctl restart mariadb #重启MariaDB

sudo systemctl enable mariadb #设置开机启动

出错及其解决方法

出错:Job for mariadb.service failed. See ‘systemctl status mariadb.service’ and ‘journalctl -xn’ for details.

执行 sudo systemctl status mariadb.service

根据提示查看 /var/log/mariadb/mariadb.log

出错原因:
InnoDB: Error: log file ./ib_logfile0 is of different size 0 8388608 bytes
InnoDB: than specified in the .cnf file 0 5242880 bytes!
InnoDB: Possible causes for this error:
(a) Incorrect log file is used or log file size is changed
(b) In case default size is used this log file is from 10.0
(c) Log file is corrupted or there was not enough disk space
In case (b) you need to set innodb_log_file_size = 48M

解决:
关闭服务:sudo systemctl stop mariadb
删除对应文件:sudo rm -f /var/lib/mysql/ib_logfile*
修改/etc/my.cnf文件,添加以下内容:
innodb_log_file_size = 8M
重启服务:sudo systemctl start mariadb

在你修改my.cnf的innodb_log_file_size参数前,请先停止mysql服务程序的运行(mysql的停止没有出现任何错误),并把/var/lib/mysql目录下的ib_logfile0、ib_logfile1、ib_logfile2等之类的文件移除到一个安全的地方(旧日志文件的保留是为了防止意外的出现),以便Mysql重启后可以将新的ib_logfile0之类日志文件生成到/var/lib/mysql目录下。如果没有什么意外,旧的日志文件可以删除。

(一些其他说法:http://cqfish.blog.51cto.com/622299/393346)

仍然出错:
[ERROR] Can’t open the mysql.plugin table. Please run mysql_upgrade to create it

解决:
mysql_install_db --user=mysql --ldata=/var/lib/mysql/

重置root密码

sudo systemctl stop mariadb #停止MariaDB
mysqld_safe --skip-grant-tables& #对所有的表设置成无密码登陆
mysql -u root -p
mysql> use mysql;
mysql> UPDATE user SET password=PASSWORD("new password") WHERE user='root';
mysql> FLUSH PRIVILEGES;
mysql> quit;

导出

1.导出结构不导出数据
mysqldump --opt -d 数据库名 -u root -p > xxx.sql  

2.导出数据不导出结构
mysqldump -t 数据库名 -uroot -p > xxx.sql 

3.导出数据和表结构
mysqldump 数据库名 -uroot -p > xxx.sql

4.导出特定表的结构
mysqldump -uroot -p -B 数据库名 --table 表名 > xxx.sql  

导入

CREATE DATABASE 数据库名 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
use 数据库名;
source 数据库文件;

远程连接

mysql -u root -p
mysql> use mysql;
允许用户root使用密码rootroot从任何主机连接到mysql服务器:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'rootroot' WITH GRANT OPTION;
允许用户root使用密码rootroot从ip为192.168.1.3的主机连接到mysql服务器:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
mysql> quit;

ubuntu 14.04 远程连接

ubuntu 14.04安装的是mysql,而不是mariadb。
另外,若要远程连接ubuntu 14.04的mysql,除了上述操作外还需要在目录/etc/mysql下找到my.cnf,将bind-address = 127.0.0.1注释。

显示 Gitment 评论