MariaDB与mysql区别
MySQL被甲骨文收购后有闭源风险,MariaDB作为MySQL的一个开源分支,其完全兼容MySQL,包括命令与api,可作为MySQL的替代品。比如以下命令,运行效果都是重启mariadb:
systemctl restart mariadb
systemctl restart mysql
MySQL数据结构
每一个mysql软件可创建多个数据库,每个数据库可以添加多个表,而每个表中可以含有多行、多列的字符串,数据就是存储在这些行与列的字符串中。
安装与初始化
#安装MariaDB
sudo apt install mariadb-server
sudo systemctl start mariadb
sudo systemctl status mariadb
sudo systemctl enable mariadb
#初始化
sudo mysql_secure_installation
*** Switch to unix_socket authentication [Y/n] n***
询问您是否要切换到使用UNIX套接字文件进行身份验证,建议否;
开启意味着只有本地用户(系统上的用户)才能访问MySQL服务器,无法通过网络连接进行访问。
*** Enter current password for root (enter for none): ***
回车,默认情况下无密码
*** Change the root password? [Y/n] y***
是否更改MySQL root用户的密码。默认情况下MySQL root用户没有设置密码。
*** Remove anonymous users? [Y/n] y ***
移除匿名用户
*** Disallow root login remotely? [Y/n] y ***
不允许root用户远程登录
*** Remove test database and access to it? [Y/n] y ***
移除测试数据库及其相关访问权限
*** Reload privilege tables now? [Y/n] y***
是否要重新加载MySQL权限表。进行了任何更改,则需要重新加载MySQL权限表才能使更改生效。
#登录
mysql -u root -p //本地shell登录
mysql -h192.168.1.1 -uroot -p -P3306 //远程shell登录
对数据库操作
SHOW DATABASES; //查看已有数据库
CREATE DATABASE .......; //创建数据库
USE your_database_name; //选择数据库
DROP DATABASE your_database_name; //删除数据库,需当前未选择该数据库
#数据库导出与导入
mysqldump -u 用户名 -p 数据库名 > 导出文件路径.sql //数据库导出
mysql -u 用户名 -p 目标数据库名 < 导入文件路径.sql //数据库导入
对表操作
SHOW TABLES;
SELECT id, code FROM invite_codes;
SELECT * FROM invite_codes WHERE used = TRUE;
SELECT * FROM users;
SELECT * FROM users WHERE chatid = ? AND emby_url = ?;
SELECT * FROM users WHERE chatid = <chatid> OR userid = '<userid>';
DELETE FROM users WHERE name = 'John';
DELETE FROM users WHERE name = 'John';
#创建表。创建名为codes的表的SQL语句,该表包含id、code和used三个列。其中id列是整数类型,不为空且自动递增;code列是8位字符类型,不为空;used列是布尔类型,默认值为FALSE。该表的主键是id列。
CREATE TABLE codes (
id INT NOT NULL AUTO_INCREMENT,
code CHAR(8) NOT NULL,
used BOOLEAN DEFAULT FALSE,
PRIMARY KEY (id)
);
#向codes表中插入两条新记录,这两条记录分别包含一个8位长的随机字符串作为字符码
INSERT INTO codes (code) VALUES ('ABCD1234'), ('EFGH5678');
#表插入2个参数
INSERT INTO user (chatid, userid) VALUES (<chatid>, '<userid>');
对用户操作
#创建用户wordpress
CREATE USER 'wordpress'@'%' IDENTIFIED BY '<password>'; //任意地址访问
CREATE USER 'wordpress'@'locahost' IDENTIFIED BY '<password>'; //仅限本地访问
#赋予用户数据库权限
*** 允许用户wordpress从任意地址访问数据库wordpress ***
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'%' WITH GRANT OPTION;
*** 仅限允许用户wordpress从本地访问数据库wordpress ***
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'locahost' WITH GRANT OPTION;
#查看用户权限
SELECT User, Host, authentication_string, plugin FROM mysql.user WHERE User = 'root';
User | Host | authentication_string | plugin |
+------+-----------+-----------------------+-------------+
| root | localhost | | unix_socket
#更新用户远程访问
UPDATE mysql.user SET Host='%' WHERE User='root'; //将localhost修改为 %
#查看用户有权访问的数据库
SHOW GRANTS FOR '用户名'@'主机名';
#删除用户
DROP USER '用户名'@'主机名';
用户远程访问
注意,对于mysql来说,权限都是“用户@主机名”形式的,任一修改了,都得重新赋权
#配置文件/etc/mysql/mariadb.conf.d/50-server.cnf,将[mysqld]下的监听地址修改为0.0.0.0
bind-address = 0.0.0.0
#修改“用户@主机名”远程访问
UPDATE mysql.user SET Host='%' WHERE User='root'; //将localhost修改为 %
#修改“用户@主机名”拥有数据库权限
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'%' WITH GRANT OPTION;
#刷新权限
FLUSH PRIVILEGES;
#重启mysql
systemctl restart mysql
删除 MariaDB 软件
sudo systemctl stop mariadb //停止mysql
sudo systemctl disable mariadb //去除开机自启
sudo apt-get remove --purge mariadb-server //删除软件
rm -rf /etc/mysql // 删除配置文件
Comments | NOTHING