分类目录归档:MySQL

linux MariaDB(MySQL)数据库更改用户权限

平时维护MariaDB(MySQL)数据库服务器,难免会用到一些常用的命令,MariaDB数据库长时间不出问题,有些sql语句就会忘记,之前也没有记载,今天没事就记录下,也共享给大家一块看看,有不足之处还望谅解。

本文操作适用于MariaDB所有版本,适用于MySQL5.2以上版本
本文生产环境Centos7.3 64位 ,MariaDB server 10.2.5

MariaDB 赋予用户权限命令的简单格式可概括为:

grant 权限 on 数据库对象 to 用户;

# mysql -u root -p //登录数据库
 Enter password:
 MariaDB [(none)]> show databases; //查看当前数据库中所有数据库
 MariaDB [(none)]> create database renwole; //新建数据库名为“renwole”
 MariaDB [renwoleBD]> show tables; //显示某个数据库中的表文件
 MariaDB [(none)]> select version(),current_date; //查看数据库版本和当前日期
 MariaDB [(none)]> drop database renwole; //删除renwole数据库
 MariaDB [renwoleDB]> desc 表名称; //查看数据库表结构
 MariaDB [(none)]> show variables like '%dir%'; //查看数据库存储路径
 MariaDB [(none)]> show grants; 查看当前用户权限
 MariaDB [(none)]> show grants for root@'localhost'; //查看用户权限

下面就MariaDB数据库实例讲解,例如:

创建添加一个renwole用户,密码为renwole123

# mysql -u root -p //登录数据库
 Enter password:
 MariaDB [(none)]> insert into mysql.user(Host,User,Password) values("localhost","renwole",password("renwole123"));

新建一个renwoleDB数据库,并授权用户renwole拥有该数据库的所有权限。

MariaDB [(none)]> create database renwoleDB; //新建
 MariaDB [(none)]> grant all privileges on renwoleDB.* to renwole@% identified by 'renwole123'; //授权,关键字 “privileges” 可以省略。
 MariaDB [(none)]> flush privileges; //刷新用户权限

如果想给一个用户查询、插入、更新、删除数据库中的所有表数据权利,可以这样来写:

MariaDB [(none)]> grant select on on renwoleDB.* to renwole@’%’ //查询
 MariaDB [(none)]> grant insert on on renwoleDB.* to renwole@’%’ //插入
 MariaDB [(none)]> grant update on on renwoleDB.* to renwole@’%’ //更新
 MariaDB [(none)]> grant delete on on renwoleDB.* to renwole@’%’ //删除

或者,用一个语句命令替代:

MariaDB [(none)]> grant select,insert,delete,update on renwoleDB.* to renwole@’%’ identified by 'renwole123';

如果想查看所有Mysql用户的权限,代码如下;

MariaDB [(none)]> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;

如果想删除一个用户及权限,可以这样写;

MariaDB [(none)]> drop user renwole@localhost;

如果想修改一个用户密码;

MariaDB [(none)]> update mysql.user set password=password('New-password') where User="renwole" and Host="%";
 MariaDB [(none)]> flush privileges;

添加高级root用户整个mysql服务器权限

grant all on *.* to root@'%' identified by 'Password';

注意:【identified by】这个句子可以顺带设置密码,如果不指定该用户口令不变。

撤销已经赋予给MariaDB用户的权限。
revoke 跟 grant 的语法相似,只需要把关键字 “to” 换成 “from” 即可,例如:

grant all on *.* to renwole@%;
 revoke all on *.* from renwole@%;

MariaDB数据库的 grant、revoke 用户权限注意事项;grant, revoke 用户权限后,该用户只有重新连接 MySQL 数据库,权限才能生效。如果想让授权的用户,也可以将这些权限 grant 给其他用户,需要选项 “grant option“,例如:

MariaDB [(none)]> grant select on renwoleDB.* to renwole@% with grant option;

这个特性一般用不到。实际中,数据库权限最好由root用户来统一管理。

注意:有时候renwole@’%’授权任意主机连接的时候需要加单引号,但有时又不需要。

linux centos7.3修改、破解mariadb(MySQL)数据库root密码

修改mysql密码有多种方案下面介绍2个

方案一

 # /usr/local/mysql/bin/mysqladmin -uroot -p password "New-password"
 Enter password: 【输入原有密码】 //输入后回车密码就修改成了New-password

方案二

 # mysql -uroot -p //回车登录mysql系统
 Enter password: 【输入原来的密码】

 MariaDB [(none)]> use mysql; //进入mysql数据库
 MariaDB [(none)]> update user set password=passworD("New-password") where user='root';
 MariaDB [(none)]> flush privileges; //刷新数据库
 MariaDB [(none)]> exit; //退出

修改完成!
如果你不记得之前的老密码,那么只能尝试破解,破解方案以下:
前置条件:必须拥有服务器最高管理员(root)权限。

 # systemctl stop mysql
 # /usr/local/mysql/bin/mysqld_safe --skip-grant-tables &

“&” 表示在后台运行,若不再后台运行,就再打开一个终端。

 # mysql
 MariaDB [(none)]> use mysql;
 MariaDB [(none)]> UPDATE user SET password=password("New-password") WHERE user='root';
 MariaDB [(none)]> flush privileges;
 MariaDB [(none)]> exit;

破解完成!

linux centos7.3导出、导入、Mariadb(MySQL)数据库命令

导出mariadb数据库有多种解决方案,一般采用phpmyadmin或Navicat for MySQL等,我演示是常用的命令行模式。

分别是;-u用户、-p密码、数据库名、> 导出路径。以.sql结尾。

/usr/local/mysql/bin/mysqldump -uroot -p renwole > /home/renwole.sql

回车后输入用户密码,导出成功,文件在home下。

注意:如果只导出表结构,在-p后面加上-d即可。
导入数据库有2种解决方案。

方案一

MariaDB [(none)]> create database renwole; //建立空数据库名
MariaDB [(none)]> use renwole; //选择数据库
MariaDB [(none)]> set names utf8; //设置数据库导入编码
MariaDB [(none)]> source /home/renwole.sql; //导入数据(注意sql文件的路径)

方案二

# mysql -uroot -p renwole < /home/renwole.sql

建议使用第二种方案导入,简单快捷不用设置导入编码,不易出错。
以上解决方案也适用于mysql&mariadb任意版本

转载请注明本站,谢谢!

Centos 7 二进制安装配置 MariaDB(MySQL)数据库

前言:

很久没安装数据库服务器了,记得上次 MySQL 安装配置的时候,系统还是 Cenots 6.5 ,现在 Centos 系统版本更新太快,都跟不上步伐了,刚好最近公司需要几台 Mariadb Server 刚好练练手。

由于每家公司的数据库服务器 版本不同,但我依然推荐大家使用 Mariadb 数据库,至少目前该社区及产品非常稳定,至于有什么新功能,建议去其官方了解更多特性。

查看系统版本命令

$ cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core) x64

1.安装 MariaDB(MySQL)

下载MariaDB二进制安装包:

//downloads.mariadb.org

解压并安装 Mariadb-devel 静态库:

$ yum install mariadb-devel numactl -y
$ mkdir /renwole
$ cd /renwole
$ tar zxvf mariadb-10.2.8-linux-glibc_214-x86_64.tar.gz

移动目录并创建软连接:

$ mv mariadb-10.2.8-linux-glibc_214-x86_64 /usr/local
$ cd /usr/local
$ ln -s mariadb-10.2.8-linux-glibc_214-x86_64 mysql

创建 MariaDB(MySQL)用户和组

$ groupadd mysql
$ useradd -g mysql mysql

赋予 MariaDB(MySQL)目录权限:

$ cd /usr/local/mysql
$ chown -R root .
$ chown -R mysql data

2.配置 MariaDB(MySQL)

删除自带的 my.cnf 配置文件,并创建新的配置文件:

$ rm -rf /etc/my.cnf
$ cp /usr/local/mysql/support-files/my-large.cnf /etc/my.cnf

注:/usr/local/mysql/support-files下有5个配置文件,请根据服务器的内存大小选择配置文件(你也可以自定义优化my.cnf配置文件,如果你之前有,只要是同版本就可以正常使用,从而无须再次创建,MariaDB(MySQL)启动的时候会自动到/etc下寻找my.cnf文件)。

文件分别是:

my-small.ini (内存 <= 64M)
my-medium.ini (内存 128M )
my-large.ini (内存 512M)
my-huge.ini (内存 1G-2G)
my-innodb-heavy-4G.ini (内存 4GB)

在my.cnf文件的 mysqld 字段加入数据库路径:

$ vim /etc/my.cnf

datadir = /usr/local/mysql/data

注意:这个路径就是初始化数据库用的,将来你的数据库都存在这个目录,这个存储路径是可以更改到其他路径的,以免将来系统宕机带来不必要的损失,所以请根据自己的需求更换相对的路径,别忘记给权限就行。

3.初始化数据库

$ cd /usr/local/mysql/scripts
$ ./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

4.设置启动脚本

$ cd /usr/local/mysql/support-files
$ cp mysql.server /etc/init.d/mysql
$ chmod +x /etc/init.d/mysql
$ systemctl enable mysql

4.设置变量

添加系统变量,例如直接输入:mysql -uroot -p 会提示无此命令:

$ vim /etc/profile

在文件末端添加以下内容:

PATH=$PATH:/usr/local/mysql/bin
export PATH

使变量立即生效并启动Mysql数据库:

$ source /etc/profile
$ systemctl restart mysql
$ ss -antp

5.初始化MariaDB(MySQL)安全账户

$ /usr/local/mysql/bin/mysql_secure_installation

注意:回车提示你输入MariaDB(MySQL)密码,新安装的mysql密码默认为空,所以直接回车,然后输入Y设置MySQL密码,输入两次回车即可,接下来全部按Y即可(大致意思是删除test数据库、匿名账号、最后Y配置生效。

至此安装完毕,如果你是按照该教程一步一步部署的,那你一定能成功,如果没成功,可以留言,我可以无偿协助。