mariadb备用
mariadb相关知识
安装/重装/升级mariadb
如果外网的太慢一般很慢,那就修改为国内的,
https://mirrors.shu.edu.cn/mariadb//mariadb-10.3.11/yum/(上海大学镜像站)也可以,
还有https://mirrors.ustc.edu.cn/mariadb/yum/
#/etc/yum.repos.d/mariadb.repo 修改为:
[mariadb-main]
name = MariaDB Server
baseurl = https://mirrors.ustc.edu.cn/mariadb/yum/10.3/centos7-amd64
gpgkey=https://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1
enabled = 1
#更新yum源:
yum list mariadb
yum clean all
yum makecache
#然后执行:
yum search mariadb
#先删除旧版的:
yum remove mariadb
#删除也可以:
rpm -qa | grep mariadb
yum remove mysql mysql-server mysql-libs compat-mysql51
rpm -e --nodeps mariadb-*全部删除;
可选:删除目录
ll /var/lib/mysql/
rm -rf /etc/my.cnf
rm -rf /var/lib/mysql/
#再安装新版的:
yum install MariaDB-server MariaDB-client
#mysql的配置文件目录读取顺序:
/etc/mysql/my.cnf
/etc/my.cnf
~/.my.cnf
#修改MySQL启动脚本/etc/rc.d/init.d/mysql,
#修改datadir=/var/lib/mysql的路径为变更后的目录:/home/mysql_data/mysql
#修改第三个文件:/usr/bin/mysqld_safe,这里要修改且添加才可以。如下:
vi /usr/bin/mysqld_safe,这里要修改DATADIR的目录为/home/mysql_data/mysql
#整理目录和权限
mkdir /var/log/mariadb
touch /var/log/mariadb/mariadb.log
chown -R mysql:mysql /var/log/mariadb/
#或
mkdir /var/run/mariadb/ chown -R mysql:mysql /var/run/mariadb/
#或
find / -name mysql.sock ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
#先使用mysql_secure_installation默认的安全设定一番,然后再自定义其他设置
mysql_secure_installation
#安装基础信息:mysql_install_db(安装信息)
#初始化
/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data
#启动mysql服务
/usr/local/mysql/bin/mysqld_safe --user=mysql --basedir=/usr/local/mysql --datadir=/data &
mysqld_safe --defaults-file=/etc/my2.cnf --user=mysql2
#重启mariadb:
mysqld start
#启动服务后,升级
mysql_upgrade
#mariadb升级到10.x步骤:
https://www.jianshu.com/p/e153aad8006b
内部命令
#用户创建
#之前是可以支持Insert方式创建,但是现在只能通过 Create命令:
#此处password是明文,不需要用password('密码')来标识
CREATE USER 'newuser'@'host' IDENTIFIED BY 'user_password';
#用户权限授权
#授权兼改密码
grant select on . to username@localhost indentified by 'password';
grant all privileges on . to username@'%' identified by 'password';
#全部授权
grant all privileges on . to username@'%';
GRANT ALL PRIVILEGES ON mydatabase.* TO 'newuser'@'localhost';
GRANT privileges ON databasename.tablename TO 'username'@'host';
GRANT RELOAD,PROCESS ON . TO 'admin'@'localhost';
#完全权限
GRANT ALL ON . TO 'pig'@'%';
GRANT ALL PRIVILEGES ON . TO 'root9'@'%' WITH GRANT OPTION;
grant all privileges on . to username@'hostname' identified by 'password' with grant option;
#其中只授予部分权限把 其中 all privileges或者all改为select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file其中一部分。
FLUSH PRIVILEGES;
#收回权限
REVOKE privilege ON databasename.tablename FROM 'username'@'host';
#刷新权限:
FLUSH PRIVILEGES;
#密码修改
#之前是可以通过Update方式修改,现在只能通过Set方式来修改
SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');
set password for 用户名@localhost = password('新密码');
set password for 用户名@localhost = password('新密码');
#如果是当前登陆用户用:
SET PASSWORD = PASSWORD("newpassword");
- 修改密码:
mysqladmin -u用户名 -p旧密码 password 新密码;
update user set password=password('123') where user='root' and host='localhost';
flush privileges; - 如果忘记密码,则先下面再修改密码:
mysqld --skip-grant-tables
首先向mysqld server 发送kill命令关掉mysqld server(不是 kill -9),你必须是UNIX的root用户或者是你所运行的SERVER上的同等用户,才能执行这个操作
killall -TERM mysqld
#不验证启动服务,需要先关闭mysql服务
mysqld_safe --skip-grant-tables &
mysqld_safe --skip-grant-tables --skip-networking &
#修改用户为需要密码才能登录,否则不用密码也可以登录
ALTER USER root@localhost IDENTIFIED VIA mysql_native_password USING PASSWORD("your_root_pass")
#编码设定:
#server.cnf文件,在[mysqld]标签下添加
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
#client.cnf文件,在[client]中添加
default-character-set=utf8
#mysql-clients.cnf文件,在[mysql]中添加
default-character-set=utf8
查看数据库的字符编码:
show variables like "%character%";show variables like "%collation%";
show variables like "%character%";show variables like "%collation%";
其他
#装好库后初步初始化数据库:mysql_secure_installation
刷新表结构
.frm .ibd 再。。。 FLUSH TABLES;
#另外临时设置变量如下:
#解决MySQL server has gone away的办法:
show global variables like 'max_allowed_packet';
set global max_allowed_packet=157286400;
查询各Schema和Table占用的空间:
use information_schema;
select table_schema,round(sum(DATA_LENGTH/1024/1024),2) as datasize from tables group by table_schema;
select table_name,concat(round(sum(data_length/1024/1024),2),'MB') as datasize from tables where table_schema='nemo' group by table_name;
#去掉外键,DDL和DML时很好用:
#取消外键约束
SET FOREIGN_KEY_CHECKS=0
#开启外键约束
SET FOREIGN_KEY_CHECKS=1
#配置文件:https://www.jianshu.com/p/ac05107db343
#权限:
权限名称 | 对应user表中的字段 | 说明 | 权限名称 | 对应user表中的字段 | 说明 |
---|---|---|---|---|---|
SELECT | Select_priv | 表示授予用户可以使用 SELECT 语句访问特定数据库中所有表和视图的权限。 | SELECT | Select_priv | 授予用户可以使用 SELECT 语句进行访问特定表的权限 |
INSERT | Insert_priv | 表示授予用户可以使用 INSERT 语句向特定数据库中所有表添加数据行的权限。 | INSERT | Insert_priv | 授予用户可以使用 INSERT 语句向一个特定表中添加数据行的权限 |
DELETE | Delete_priv | 表示授予用户可以使用 DELETE 语句删除特定数据库中所有表的数据行的权限。 | DELETE | Delete_priv | 授予用户可以使用 DELETE 语句从一个特定表中删除数据行的权限 |
UPDATE | Update_priv | 表示授予用户可以使用 UPDATE 语句更新特定数据库中所有数据表的值的权限。 | UPDATE | Update_priv | 授予用户可以使用 UPDATE 语句更新特定数据表的权限 |
REFERENCES | References_priv | 表示授予用户可以创建指向特定的数据库中的表外键的权限。 | REFERENCES | References_priv | 授予用户可以创建一个外键来参照特定数据表的权限 |
CREATE | Create_priv | 表示授权用户可以使用 CREATE TABLE 语句在特定数据库中创建新表的权限。 | CREATE | Create_priv | 授予用户可以使用特定的名字创建一个数据表的权限 |
ALTER | Alter_priv | 表示授予用户可以使用 ALTER TABLE 语句修改特定数据库中所有数据表的权限。 | ALTER | Alter_priv | 授予用户可以使用 ALTER TABLE 语句修改数据表的权限 |
SHOW VIEW | Show_view_priv | 表示授予用户可以查看特定数据库中已有视图的视图定义的权限。 | |||
CREATE ROUTINE | Create_routine_priv | 表示授予用户可以为特定的数据库创建存储过程和存储函数的权限。 | |||
ALTER ROUTINE | Alter_routine_priv | 表示授予用户可以更新和删除数据库中已有的存储过程和存储函数的权限。 | DROP | Drop_priv | 授予用户可以删除数据表的权限 |
INDEX | Index_priv | 表示授予用户可以在特定数据库中的所有数据表上定义和删除索引的权限。 | INDEX | Index_priv | 授予用户可以在表上定义索引的权限 |
DROP | Drop_priv | 表示授予用户可以删除特定数据库中所有表和视图的权限。 | |||
CREATE TEMPORARY TABLES | Create_tmp_table_priv | 表示授予用户可以在特定数据库中创建临时表的权限。 | |||
CREATE VIEW | Create_view_priv | 表示授予用户可以在特定数据库中创建新的视图的权限。 | |||
EXECUTE ROUTINE | Execute_priv | 表示授予用户可以调用特定数据库的存储过程和存储函数的权限。 | |||
LOCK TABLES | Lock_tables_priv | 表示授予用户可以锁定特定数据库的已有数据表的权限。 | |||
ALL 或 ALL PRIVILEGES 或 SUPER | Super_priv | 表示以上所有权限/超级权限 | ALL 或 ALL PRIVILEGES 或 SUPER | Super_priv | 所有的权限名 |
CentOS7下修改mariadb数据库文件的路径:
mariadb默认的数据文档存储目录为/var/lib/mysql,要想将默认创建目录改成/data,需要一下操作:
#1、创建/data目录
mkdir /data
chmod 777 /data(要给这个目录至少要附加读写权限)
#2、把mariadb服务停掉:
systemctl stop mariadb.service
#3、把/var/lib/mysql整个目录复制到/data
cp -r /var/lib/mysql/* /data/
#这样就把MySQL的数据文档复制到了/data下
#4、编辑mariadb的配置文档/etc/my.cnf
在[client]下添加:
把原来的socket=/var/lib/mysql/mysql.sock,前边加#注释掉,添加socket=/data/mysql.sock(以防有问题再改回来)。
在[mysqld]下添加:
把原来的socket=/var/lib/mysql/mysql.sock,前边加#注释掉,添加socket=/data/mysql.sock(以防有问题再改回来)。
datadir =/datal (这行没有,需要自己加上)
保存后退出。
#5、修改权限组
chown -R mysql:mysql /data/mysql
#6、重新启动mariadb服务
systemctl start mariadb.service。