mysql授权、启动、启动服务常用命令

一、 四种启动方式:

1、mysqld

启动mysql服务器: ./mysqld --defaults-file=/etc/my.cnf --user=root
客户端连接: mysql --defaults-file=/etc/my.cnf 或 mysql -S /tmp/mysql.sock

2、mysqld_safe

启动mysql服务器: ./mysqld_safe --defaults-file=/etc/my.cnf --user=root &
客户端连接: mysql --defaults-file=/etc/my.cnf 或 mysql -S /tm/mysql.sock

3、mysql.server

cp -v /usr/local/mysql/support-files/mysql.server /etc/init.d/
chkconfig --add mysql.server
启动mysql服务器:service mysql.server {start|stop|restart|reload|force-reload|status}
客户端连接: 同1、2

4、mysqld_multi

mkdir $MYSQL_BASE/data2
cat <<-EOF>> /etc/my.cnf
[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /user/local/mysql/bin/mysqladmin
user = mysqladmin
password = mysqladmin

[mysqld3306]
port   = 3306
socket   = /tmp/mysql3306.sock
pid-file = /tmp/mysql3306.pid
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data

[mysqld3307]
port   = 3307
socket   = /tmp/mysql3307.sock
pid-file = /tmp/mysql3307.pid
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data2
EOF

#mysql -S /tmp/mysql3306.sock
mysql>GRANT SHUTDOWN ON *.* TO 'mysqladmin'@'localhost' identified by 'mysqladmin' with grant option;

#mysql -S /tmp/mysql3307.sock
mysql>GRANT SHUTDOWN ON *.* TO 'mysqladmin'@'localhost' identified by 'mysqladmin' with grant option;

启动mysql服务器:./mysqld_multi --defaults-file=/etc/my.cnf start 3306-3307
关闭mysql服务器:mysqladmin shutdown

二、 启动和关闭mysql服务

1. windows下:

启动: mysqld --console 或 net start mysql
关闭: mysqladmin -u root shutdown 或 net stop mysql

linux下:

启动: service mysql start
停止: service mysql stop
重启服务: service mysql restart

三、创建用户分配权限

1. 新建用户: 创建一个名为: buff,密码为: buff的用户

// root 用户登陆 MySQL
mysql -uroot -p
Enter password:
// 新建用户
mysql>insert into mysql.user(Host,User,Password) values("localhost","buff",password("buff"));
// 刷新系统权限表
mysql>flush privileges;

登录测试

mysql>exit
// 用户 buff 登陆 MySQL
mysql -ubuff -p
Enter password:
mysql>
// 说明新建的用户buff登录成功

用户授权

// root 用户登陆 MySQL
mysql -uroot -p
Enter password:
// 为用户 buff 创建一个数据库 bluebuff
mysql>create database bluebuff;
// 授权用户 buff 拥有数据库 bluebuff 的所有权限
mysql>grant all privileges on bluebuff.* to buff@localhost identified by 'buff';
mysql>flush privileges;

登录测试

// 用户 buff 登陆数据库
mysql -ubuff -p
Enter privileges:
// 显示数据库
mysql>show databases;

结果如下图所示,说明为用户 buff 授权成功

5、 修改用户 buff 的密码

// root 用户登陆 MySQL
mysql -uroot -p
Enter password:
// 修改用户 buff 的密码
mysql>update table mysql.user set password=password('buffer') where User='buff' and Host='localhost';
mysql>flush privileges;

6、 删除用户

// root 用户登陆 MySQL
mysql -uroot -p
Enter password:
// 删除用户 buff
mysql>delete from mysql.user where User = 'buff' and Host = 'localhost';
mysql>flush privileges;

7、 删除数据库

mysql>drop database bluebuff;

四、 查看用户授予的权限

在mysql中,授予用户的权限可能分全局层级权限、数据库层级权限、表层级别权限、列层级别权限、子程序层级权限

1. 全局层级:

全局权限适用于一个给定服务器中的所有数据库。这些权限存储在mysql.user表中。GRANT ALL ON *.*和REVOKE ALL ON *.*只授予和撤销全局权限。

例:a. 创建一个测试账号test,授予全局层级的权限
mysql> grant select,insert on *.* to test@'%' identified by 'test';
mysql> flush privileges;

b. 查询授予test的权限
show grants for test;
select * from mysql.user where user='test'\G;

2 、 数据库层级:

数据库权限适用于一个给定数据库中的所有目标。这些权限存储在mysql.db和mysql.host表中。GRANT ALL ON db_name.*和REVOKE ALL ON db_name.*只授予和撤销数据库权限

例:a. 创建一个测试账号test,授予数据库层级的权限
drop user test;
grant select,insert,update,delete on MyDB.* to test@'%' identified by 'test';

b. 查询授予test的权限
select * from mysql.user where user='test'\G; --可以看到无任何授权
select * from mysql.db where user='test'\G;
show grants for test;

3、 表层级:

表权限适用于一个给定表中的所有列。这些权限存储在mysql.tables_priv表中。GRANT ALL ON db_name.tbl_name和REVOKE ALL ON db_name.tbl_name只授予和撤销表权限。

例:a. 创建一个测试账号test,授予表层级的权限
drop user test;
flush privileges;
grant all on MyDB.kkk to test@'%' identified by 'test';

b. 查询授予test的权限
show grants for test;
 select * from mysql.tables_priv\G;

4、 列层级:

列权限适用于一个给定表中的单一列。这些权限存储在mysql.columns_priv表中。当使用REVOKE时,您必须指定与被授权列相同的列。

例:a. 创建一个测试账号test,授予列层级的权限
drop user test;
flush privileges;
grant select (id, col1) on MyDB.TEST1 to test@'%' identified by 'test';
flush privileges;

b. 查询授予test的权限
select * from mysql.columns_priv;
show grants for test;

5、 子程序层级:

CREATE ROUTINE, ALTER ROUTINE, EXECUTE和GRANT权限适用于已存储的子程序。这些权限可以被授予为全局层级和数据库层级。而且,除了CREATE ROUTINE外,这些权限可以被授予为子程序层级,并存储在mysql.procs_priv表中。

例:a. 创建一个测试账号test,授予子程序层级的权限
DROP PROCEDURE IF EXISTS PRC_TEST;
DELIMITER //
CREATE PROCEDURE PRC_TEST()
-> BEGIN
-> SELECT * FROM kkk;
-> END //
DELIMITER ;
grant execute on MyDB.PRC_TEST to test@'%' identified by 'test';

flush privileges;

b. 查询授予test的权限
show grants for test;
select * from mysql.procs_priv where User='test';

总结:

1. 如果需要查看用户被授予的权限,就需要从这五个层级来查看被授予的权限。从上到下或从小到上,逐一检查各个层级被授予的权限。

2. grant create routine, alter routine, select, create, insert, update, delete, execute on ….

3. 如果客户端无法连接到服务器,则查看user表中的host项是否为'%',并且已经授权了

您可能感兴趣的文章:

  • MySQL命令行下18个常用命令
  • Linux系统中MySQL的常用操作命令
  • Centos7重启apache、nginx、mysql、php-fpm命令方法
  • linux下导入、导出mysql数据库命令的实现方法
  • 详解MySQL中EXPLAIN解释命令及用法讲解
  • MySql常用查询命令操作大全
  • MySql数据库查询中的特殊命令
  • Mysql如何使用命令实现分级查找帮助详解
  • 解决Windows10下mysql5.5数据库命令行中文乱码问题
  • Linux操作系统操作MySQL常用命令小结
  • Mysql使用kill命令解决死锁问题(杀死某条正在执行的sql语句)
  • MySQL 5.7 mysql command line client 使用命令详解
  • MySQL 数据库 source 命令详解及实例
(0)

相关推荐

  • Mysql如何使用命令实现分级查找帮助详解

    前言 本文主要给大家介绍了Mysql使用命令分级查找帮助的相关内容,本文章样例基于msql的分支版本MariaDB-10.1.19,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 查询所有帮助 我们如果希望知道mysql一共能为我们提供哪些帮助可以使用如下命令 ? contents 或者将?替换为help也可,二者效果一致 help contents 效果如下图 ? 与help等价 为了简便 我们下方统一使用?,但读者需要知道我们如果用help也是一样的效果 各项解释 英文 中文

  • MySQL 数据库 source 命令详解及实例

    MySQL 数据库 source 命令详解及实例 MySQL 数据库 source 命令,该命令是数据库导入命令.source 命令的用法非常简单,首先你需要进入 MySQL 数据库的命令行管理界面,然后选择需要导入的数据库,执行 source 命令.如下图所示. MySql 数据库 source 命令 mysql> use test Database changed mysql> set names utf8; Query OK, 0 rows affected (0.00 sec) mys

  • 详解MySQL中EXPLAIN解释命令及用法讲解

    1,情景描述:同事教我在mysql中用explain,于是查看了一番返回内容的含义 2,现就有用处的内容做如下记录: 1,explain显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句. 使用方法,在select语句前加上explain就可以了: explain select count(DISTINCT uc_userid) as user_login from user_char_daily_gameapp_11 where uc_d

  • MySQL命令行下18个常用命令

    在日常的网站维护和管理中,会用到非常多的SQL语句, 熟练使用对网站管理有很多好处,尤其是站群管理的时候. 下面列一些常用的命令做备记. 1.显示数据库 show databases 显示表 show tables;  2.创建用户 创建root用户密码为123 use mysql; grant all on *.* to root@'%' identified by '123' with grant option; commit;  3.修改密码 grant all on *.* to xin

  • Centos7重启apache、nginx、mysql、php-fpm命令方法

    apache 启动 systemctl start httpd 停止 systemctl stop httpd 重启 systemctl restart httpd mysql 启动 systemctl start mysqld 停止 systemctl stop mysqld 重启 systemctl restart mysqld php-fpm 启动 systemctl start php-fpm 停止 systemctl stop php-fpm 重启 systemctl restart

  • Mysql使用kill命令解决死锁问题(杀死某条正在执行的sql语句)

    在使用mysql运行某些语句时,会因数据量太大而导致死锁,没有反映.这个时候,就需要kill掉某个正在消耗资源的query语句即可, KILL命令的语法格式如下: KILL [CONNECTION | QUERY] thread_id 每个与mysqld的连接都在一个独立的线程里运行,您可以使用SHOW PROCESSLIST语句查看哪些线程正在运行,并使用KILL thread_id语句终止一个线程. KILL允许自选的CONNECTION或QUERY修改符:KILL CONNECTION与不

  • Linux操作系统操作MySQL常用命令小结

    下面给大家分享mysql常用命令, -- 启动数据库 service myslqd start; -- 进入MySQL -u root -p/mysql -h localhost -u root -p DatabaseName; -- 列出数据库 show database; -- 创建数据库 create database XXXX; -- 选择数据库 use DatabaseName; -- 罗列表 show table; -- 显示表格的属性 show columns from table

  • MySql数据库查询中的特殊命令

    第一:   MySQL的安装 下载MySQL软件,修改安装路径之后 安装数据库MySQL5.7.18 第一步:数据库MySQL5.7.18可以在官网上下载对应的版本,下载地址:http://www.filehorse.com/download-mysql-64/, 第二步:将下载好的安装包进行解压到一个盘下面, 第三步:配置环境变量,新建环境变量MySQL_HOME,输入MySQL的安装目录, 然后再把;%MYSQL_HOME%\bin插入到Path的最后面: 第四步:以管理员的身份运行命令行,

  • MySql常用查询命令操作大全

    MYSQL常用查命令: mysql> select version(); 查看MySQL的版本号 mysql> select current_date(); 查看MySQL的当前日期 mysql> select version(),current_date(); 同时查看MySQL的版本号和当前日期 mysql> show databases; 显示当前存在的数据库 mysql> USE mysql 选择使用数据库(USE和QUIT命令不需要分号结束) Database ch

  • 解决Windows10下mysql5.5数据库命令行中文乱码问题

    重置系统后,很久之前安装的MySQL数据库出现了控制台查询中文乱码问题,时间太久早已经不记得怎么设置了. 网上查询了许多,各种设置,重启数据库后仍然是中文乱码. 可能是我搜索方式不对,最后还好已经解决,特开一处女博记录一下: 打开安装目录下的my.ini文件 我的是:C:\Program Files\MySQL\MySQL Server 5.5下面,修改如下: [client] default-character-set=utf8 port=3306 [mysql] #网上下面这个 gbk 很多

  • linux下导入、导出mysql数据库命令的实现方法

    一.导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径): 1.导出数据和表结构: mysqldump -u用户名 -p密码 数据库名 > 数据库名.sql /usr/local/mysql/bin/ mysqldump -uroot -p abc > abc.sql 敲回车后会提示输入密码 2.只导出表结构 mysqldump -u用户名 -p密码 -d 数据库名 > 数据库名.sql /usr/local/mysql/bin/ mysqldump -uroo

  • Linux系统中MySQL的常用操作命令

    服务: # chkconfig --list        列出所有系统服务 # chkconfig --list | grep on     列出所有启动的系统服务 # chkconfig --list mysqld # whereis mysql  查看文件安装路径 # which mysql     查询运行文件所在路径(文件夹地址) usr/bin/mysql 是指:mysql的运行路径 var/lib/mysql 是指:mysql数据库文件的存放路径 usr/lib/mysql 是指:

  • MySQL 5.7 mysql command line client 使用命令详解

    MySQL 5.7 MySQL command line client 使用命令 1.输入密码:****** 2.ues mysql;使用Mysql 3.show databases;显示数据库 4.use register;使用数据库名为register 5.show tables;显示register数据库中的表 6.describe user;对表user进行操作: insert into user(username,password) values("xiaoyan",&quo

随机推荐