mysql与mariadb

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险.大型互联网用户以及Linux发行商纷纷抛弃MySQL,转投MariaDB阵营。MariaDB是目前最受关注的MySQL数据库衍生版,也被视为开源数据库MySQL的替代品。MariaDB虽然被视为MySQL数据库的替代品,但它在扩展功能、存储引擎以及一些新的功能改进方面都强过MySQL

安装
1
sudo apt install mariadb-server//安装

安装上之后,发现和mysql不一样的地方,它没有弹出设置密码的那个蓝色的界面,MaraiDB 的默认密码是空的,但是只能用 linux下的root 用户登录

  • 验证安装
1
2
3
4
5
6
mariadb  --version
//下面是返回的信息

mysqladmin Ver 9.1 Distrib 10.1.26-MariaDB, for debian-linux-gnu on x86_64

select user,plugin from mysql.user;

基本配置

  • 登录
1
$ sudo mysql -uroot -p
  • 创建用户并授权
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
create user 'Yhch'@'%' identified by 'password';
//表示创建一个名为Yhch的用户,让其可以以任何IP地址访问数据库
//与之对应的是'localhost',表示只能在本机访问,不能远程连接/,关于远程连接后面会提到


grant all privileges on *.* to 'Yhch'@'%' identified by
'password' with optoins;
//表示把操作所有表(on *.*)的所有的权限(all privileges),授予给用户'Yhch'

flush privileges
//最后刷新一下配置



//如果你懒得创建新的用户,那么你可以直接在root用户下使用,原理是一样的,
//只是更改mysql.user这张表中的,用户名为root的记录
update mysql.user set plugin='' where user='root';


select user,hsot from mysql.user;

update mysql.user set host='%' where user='root';

grant all privileges on *.* to 'root'@'%' identified by 'password' with grant option;

flush privileges;

systemctl restart mariadb
解决远程连接和中文乱码的问题
  • 远程连接问题
  • 这里涉及到三个细节

    1.允许用户非本地IP地址登录(前面已解决改’localhost’为’%’)

    2.授权用户有远程登录的权限(前面已解决grant all privileges)

    3.mariadb 从安全角度考虑,默认绑定了,只允许本地连接,需要修改配置文件,mariadb9的配置文件路径如下

1
2
3
cd /etc/mysql/mariadb.conf.d/

sudo vi 50-server.cnf

picone

1
2
3
//进入到该目录用编辑器打开50-server.cnf这个文件

(# band-address = 127.0.0.1)//将其注释掉

pictwo

mysql5.7 配置文件位置略有不同

picthree

  • 中文乱码的问题(建表时指定字符集为utf-8也可以)
1
2
3
4
5
6
7
8
9
10
11
12
13
vi /etc/mysql/conf.d/mysql.cnf 
[mysql]
default-character-set=utf8 //添加这一行



vi /etc/mysql/mysql.conf.d/mysqld.cnf

[mysql]
character-set-server=utf8 //添加这一行

service mysql stop
service mysal start

扩展

  • 导入本地数据到远程服务器的mysql上
1
2
3
load data local infile '/home/yhch/homework/CLASSINFO.csv' into table ClassInfo 
fields terminated by ','
ignore 1 lines;//去表第一行即表头,原理和之前的oracle一样
  • 数据库迁移(将线上的数据库,连同数据迁移到本地数据库)
1
2
3
//从远程数据库导出数据库

sudo mysqldump -h 193.112.77.165 -uroot -pyhchdev666 mydatabase --default-character-set=utf8 --opt -Q -R --skip-lock-tables>/home/yhch/mydatabas

picfour

1
2
//导入到本地数据库
mysql> source /home/yhch/mydatabase.sql;

效果

picfive

投喂我

写文不易,如果本文对你有帮助,点击Donate,微信和支付宝投喂我