MySQL权限管理、配置文件(三)
一、MySQL权限管理
GRANT 权限 ON 授权范围 TO '用户名'@'允许的ip(所有%)' IDENTIFIED BY '用户密码'; 权限:参加下表,一般常用的是CREATE、DELETE、UPDATE、SELECT 授权范围:1.库名.表名(全部*) 2.所有数据库 *.*
例:
# 为word用户授权wordpress数据库所有的权限 ALL 后面+ PRIVILEGES GRANT ALL PRIVILEGES ON wordpress.* TO 'word'@'%' IDENTIFIED BY 'password';
# 刷新权限 FLUSH PRIVILEGES;
# 查看权限 show grants for word@'%';
# 移除权限 EVOKE ALL PRIVILEGES ON *.* (库名或者 '*'-表示全部) FROM '用户名'@'ip';
# 删除用户 DROP USER word@'%';
# 修改用户密码 SET PASSWORD FOR 'word'@'%' = PASSWORD('123456');
# 为远程登录的用户增加用户授权的命令
GRANT ALL PRIVILEGES ON *.* to 'root'@'192.168.5.%' identified by 'Wza7pK82016BC' with grant option;
all privileges:表示将所有权限授予给用户。也可指定具体的权限,如:SELECT、CREATE、DROP等。
on:表示这些权限对哪些数据库和表生效,格式:数据库名.表名,这里写'*'表示所有数据库,所有表。如果我要指定将权限应用到test库的user表中,可以这么写:test.user
to:将权限授予哪个用户。格式:'用户名'@'登录IP或域名'。%表示没有限制,在任何主机都可以登录。比如:'lin'@'192.168.0.%',表示yangxin这个用户只能在192.168.0.*的IP段登录
identified by:指定用户的登录密码
with grant option:表示允许用户将自己的权限授权给其它用户。root登录后没有授权选项。
权限 | 列 | 上下文 |
CREATE | Create_priv | 数据库、表或索引 |
DROP | Drop_priv | 数据库或表 |
GRANT OPTION | Grant_priv | 数据库、表或保存的程序 |
REFERENCES | References_priv | 数据库或表 |
ALTER | Alter_priv | 表 |
DELETE | Delete_priv | 表 |
INDEX | Index_priv | 表 |
INSERT | Insert_priv | 表 |
SELECT | Select_priv | 表 |
UPDATE | Update_priv | 表 |
CREATE VIEW | Create_view_priv | 视图 |
SHOW VIEW | Show_view_priv | 视图 |
ALTER ROUTINE | Alter_routine_priv | 保存的程序 |
CREATE ROUTINE | Create_routine_priv | 保存的程序 |
EXECUTE | Execute_priv | 保存的程序 |
FILE | File_priv | 服务器主机上的文件访问 |
CREATE TEMPORARY TABLES | Create_tmp_table_priv | 服务器管理 |
LOCK TABLES | Lock_tables_priv | 服务器管理 |
CREATE USER | Create_user_priv | 服务器管理 |
PROCESS | Process_priv | 服务器管理 |
RELOAD | Reload_priv | 服务器管理 |
REPLICATION CLIENT | Repl_client_priv | 服务器管理 |
REPLICATION SLAVE | Repl_slave_priv | 服务器管理 |
SHOW DATABASES | Show_db_priv | 服务器管理 |
SHUTDOWN | Shutdown_priv | 服务器管理 |
SUPER | Super_priv | 服务器管理 |
二、MySQL的连接命令
# tcp/ip 连接 mysql -uroot -p123456 -h 192.168.7.80 -P 3306 # socket 连接 mysql -uroot -p123456 -S /usr/local/mysql/mysql.sock # 直接在linux客户端执行mysql的命令 # mysql -uroot -p123456 -e 'show databases;' # 导入指定的数据库 # mysql -uroot -p123456 wordpress < wordpress.sql
三、启动和停止数据库
# 数据库启动流程 mysql.server(/etc/init.d/mysqld start) --> mysqld_safe(/usr/local/mysql/bin/mysqld_safe &) --> mysqld # 单实例启动命令 /etc/init.d/mysqld start /usr/local/mysql/bin/mysqld_safe & # 单实例关闭服务命令 /etc/init.d/mysqld stop mysqladmin -uroot -p123456 shutdown # 多实例启动服务命令 /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/3306/my.cnf & # 多实例关闭服务命令 mysqladmin -uroot -p123456 -S /data/mysql2/3306.sock shutdown
四、my.cnf配置文件
4.1 定制mysql启动时的参数
./mysqld_safe --socket=/tmp/my.sock &
4.2 使用配置文件my.cnf
优先级:命令行 --> 初始化配置文件 --> 预编译的选项
4.3 初始化配置文件读取顺序
/etc/my.cnf --> /etc/mysql/my.cnf --> $MYSQL_HOME/my.cnf --> defaults-extra-file --> ~/.my.cnf
注意:以最后一个读到的配置文件为准,如果使用./bin/mysqld_safe守护进程启动mysql数据时,使用了--defaults-file=<配置文件路径>参数,这时只会使用这个参数指定的配置文件。
mysqld_safe --defaults-file=/tmp/my.conf &
4.4 MySQL初始化配置文件书写格式,依靠标签来识别服务器和客户端
[server] # 所有服务器程序
[mysqld] # 特定于服务器端程序
[mysqld_safe] # 特定于服务器端程序
[client] # 所有客户端程序
[mysql] # 特定于客户端程序
[mysqldump] # 特定于客户端程序
4.5 配置文件样例
# cat /etc/my.cnf [mysqld] server_id=80 port=3306 basedir=/usr/local/mysql datadir=/backup/data socket=/tmp/mysql.sock log_bin=/backup/binlog/mysql-bin log_error=/var/log/mysql.log binlog_format=row sync_binlog=1 character-set-server=utf8 # 慢查询日志开启 slow_query_log=1 slow_query_log_file=/backup/slow.log long_query_time=0.05 log_queries_not_using_indexes # 开启GTID的功能,否则就是普通的复制 gtid-mode=on # 强制GTID的一致性 enforce-gtid-consistency=true # 强制从库记录二进制日志;slave更新是否记入日志 log-slave-updates=1 # 安全储存目录 secure-file-priv=/backup autocommit=0 # transaction_isolation=read-committed # 一般查询日志 # general_log=on # general_log_file=/usr/local/mysql/server.log # [mysqld_safe] # log-error=/usr/local/mysql/ # pid-file=/var/run/mysql/mysql.pid [client] # default-character-set=utf8 # character-set-server=utf8 socket=/tmp/mysql.sock