mysql与mariadb
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险.大型互联网用户以及Linux发行商纷纷抛弃MySQL,转投MariaDB阵营。MariaDB是目前最受关注的MySQL数据库衍生版,也被视为开源数据库MySQL的替代品。MariaDB虽然被视为MySQL数据库的替代品,但它在扩展功能、存储引擎以及一些新的功能改进方面都强过MySQL
安装
sudo apt install mariadb-server//安装
安装上之后,发现和mysql不一样的地方,它没有弹出设置密码的那个蓝色的界面,MaraiDB 的默认密码是空的,但是只能用 linux下的root 用户登录
- 验证安装
mariadb --version
//下面是返回的信息
mysqladmin Ver 9.1 Distrib 10.1.26-MariaDB, for debian-linux-gnu on x86_64
select user,plugin from mysql.user;
基本配置
- 登录
$ sudo mysql -uroot -p
- 创建用户并授权
create user 'Yhch'@'%' identified by 'password';
//表示创建一个名为Yhch的用户,让其可以以任何IP地址访问数据库
//与之对应的是'localhost',表示只能在本机访问,不能远程连接/,关于远程连接后面会提到
grant all privileges on *.* to 'Yhch'@'%' identified by
'password' with grant optoin;
//表示把操作所有表(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的配置文件路径如下
cd /etc/mysql/mariadb.conf.d/
sudo vi 50-server.cnf
//进入到该目录用编辑器打开50-server.cnf这个文件
(# band-address = 127.0.0.1)//将其注释掉
mysql5.7 配置文件位置略有不同
- 中文乱码的问题(建表时指定字符集为utf-8也可以)
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上
load data local infile '/home/yhch/homework/CLASSINFO.csv' into table ClassInfo
fields terminated by ','
ignore 1 lines;//去表第一行即表头,原理和之前的oracle一样
- 数据库迁移(将线上的数据库,连同数据迁移到本地数据库)
//从远程数据库导出数据库
sudo mysqldump -h 193.112.77.165 -uroot -pyourpassword mydatabase --default-character-set=utf8 --opt -Q -R --skip-lock-tables>/home/yhch/mydatabas
//导入到本地数据库
mysql> source /home/yhch/mydatabase.sql;
效果
关于作者
个人博客:https://Yhchdev.github.io