今天给大家分享下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--addmysql.server
启动mysql服务器:servicemysql.server{start|stop|restart|reload|force-reload|status}
客户端连接:同1、2
4、mysqld_multi
mkdir$MYSQL_BASE/data2cat<<-EOF>>/etc/my.cnf[mysqld_multi]mysqld=/usr/local/mysql/bin/mysqld_safemysqladmin=/user/local/mysql/bin/mysqladminuser=mysqladminpassword=mysqladmin[mysqld3306]port=3306socket=/tmp/mysql3306.sockpid-file=/tmp/mysql3306.pidskip-external-lockingkey_buffer_size=16Mmax_allowed_packet=1Mtable_open_cache=64sort_buffer_size=512Knet_buffer_length=8Kread_buffer_size=256Kread_rnd_buffer_size=512Kmyisam_sort_buffer_size=8Mbasedir=/usr/local/mysqldatadir=/usr/local/mysql/data[mysqld3307]port=3307socket=/tmp/mysql3307.sockpid-file=/tmp/mysql3307.pidskip-external-lockingkey_buffer_size=16Mmax_allowed_packet=1Mtable_open_cache=64sort_buffer_size=512Knet_buffer_length=8Kread_buffer_size=256Kread_rnd_buffer_size=512Kmyisam_sort_buffer_size=8Mbasedir=/usr/local/mysqldatadir=/usr/local/mysql/data2EOF#mysql-S/tmp/mysql3306.sockmysql>GRANTSHUTDOWNON*.*TO'mysqladmin'@'localhost'identifiedby'mysqladmin'withgrantoption;#mysql-S/tmp/mysql3307.sockmysql>GRANTSHUTDOWNON*.*TO'mysqladmin'@'localhost'identifiedby'mysqladmin'withgrantoption;启动mysql服务器:./mysqld_multi--defaults-file=/etc/my.cnfstart3306-3307关闭mysql服务器:mysqladminshutdown
二、启动和关闭mysql服务
1.windows下:
启动:mysqld--console或netstartmysql
关闭:mysqladmin-urootshutdown或netstopmysql
linux下:
启动:servicemysqlstart
停止:servicemysqlstop
重启服务:servicemysqlrestart
1.新建用户:创建一个名为:buff,密码为:buff的用户
//root用户登陆MySQLmysql-uroot-pEnterpassword://新建用户mysql>insertintomysql.user(Host,User,Password)values("localhost","buff",password("buff"));//刷新系统权限表mysql>flushprivileges;
登录测试
mysql>exit//用户buff登陆MySQLmysql-ubuff-pEnterpassword:mysql>//说明新建的用户buff登录成功
用户授权
//root用户登陆MySQLmysql-uroot-pEnterpassword://为用户buff创建一个数据库bluebuffmysql>createdatabasebluebuff;//授权用户buff拥有数据库bluebuff的所有权限mysql>grantallprivilegesonbluebuff.*tobuff@localhostidentifiedby'buff';mysql>flushprivileges;
登录测试
//用户buff登陆数据库mysql-ubuff-pEnterprivileges://显示数据库mysql>showdatabases;
5、修改用户buff的密码
//root用户登陆MySQLmysql-uroot-pEnterpassword://修改用户buff的密码mysql>updatetablemysql.usersetpassword=password('buffer')whereUser='buff'andHost='localhost';mysql>flushprivileges;
6、删除用户
//root用户登陆MySQLmysql-uroot-pEnterpassword://删除用户buffmysql>deletefrommysql.userwhereUser='buff'andHost='localhost';mysql>flushprivileges;
7、删除数据库
mysql>dropdatabasebluebuff;
四、查看用户授予的权限
在mysql中,授予用户的权限可能分全局层级权限、数据库层级权限、表层级别权限、列层级别权限、子程序层级权限
1.全局层级:
全局权限适用于一个给定服务器中的所有数据库。这些权限存储在mysql.user表中。GRANTALLON*.*和REVOKEALLON*.*只授予和撤销全局权限。
例:a.创建一个测试账号test,授予全局层级的权限mysql>grantselect,inserton*.*totest@'%'identifiedby'test';mysql>flushprivileges;b.查询授予test的权限showgrantsfortest;select*frommysql.userwhereuser='test'\G;
2、数据库层级:
数据库权限适用于一个给定数据库中的所有目标。这些权限存储在mysql.db和mysql.host表中。GRANTALLONdb_name.*和REVOKEALLONdb_name.*只授予和撤销数据库权限
例:a.创建一个测试账号test,授予数据库层级的权限dropusertest;grantselect,insert,update,deleteonMyDB.*totest@'%'identifiedby'test';b.查询授予test的权限select*frommysql.userwhereuser='test'\G;--可以看到无任何授权select*frommysql.dbwhereuser='test'\G;showgrantsfortest;
3、表层级:
表权限适用于一个给定表中的所有列。这些权限存储在mysql.tables_priv表中。GRANTALLONdb_name.tbl_name和REVOKEALLONdb_name.tbl_name只授予和撤销表权限。
//root用户登陆MySQLmysql-uroot-pEnterpassword://新建用户mysql>insertintomysql.user(Host,User,Password)values("localhost","buff",password("buff"));//刷新系统权限表mysql>flushprivileges;0
4、列层级:
列权限适用于一个给定表中的单一列。这些权限存储在mysql.columns_priv表中。当使用REVOKE时,您必须指定与被授权列相同的列。
//root用户登陆MySQLmysql-uroot-pEnterpassword://新建用户mysql>insertintomysql.user(Host,User,Password)values("localhost","buff",password("buff"));//刷新系统权限表mysql>flushprivileges;1
5、子程序层级:
CREATEROUTINE,ALTERROUTINE,EXECUTE和GRANT权限适用于已存储的子程序。这些权限可以被授予为全局层级和数据库层级。而且,除了CREATEROUTINE外,这些权限可以被授予为子程序层级,并存储在mysql.procs_priv表中。
//root用户登陆MySQLmysql-uroot-pEnterpassword://新建用户mysql>insertintomysql.user(Host,User,Password)values("localhost","buff",password("buff"));//刷新系统权限表mysql>flushprivileges;2
总结:
1.如果需要查看用户被授予的权限,就需要从这五个层级来查看被授予的权限。从上到下或从小到上,逐一检查各个层级被授予的权限。
2.grantcreateroutine, alterroutine,select,create,insert,update,delete,executeon….
3.如果客户端无法连接到服务器,则在确定telnet端口可以通的前提下去查看user表中的host项是否为'%',并且已经授权了
4.如果本地服务器无法连接到服务器,则查看user表中的host项是否为'localhost',并且已经授权了