一、mysql创建用户
查看最新文章更新:请点击这里
1、创建用户
mysql> create user test@'%' identified by '123456'; 创建了用户,但是没有任何权限 Query OK, 0 rows affected (0.00 sec) mysql> grant all on *.* to root@'localhost' identified by '123456'; 没有用户,则创建用户,用户存在,就赋予权限 Query OK, 0 rows affected (0.00 sec)
2、删除用户
mysql> drop user test; Query OK, 0 rows affected (0.00 sec)
3、用户的定义
1) username@’主机域’
2)主机域:可以理解为是MySQL登陆的白名单
3)主机域格式:
’10.0.0.51’
’10.0.0.5%’
’10.0.0.%’
’10.0.%.%’
’10.%.%.%’
‘%’
‘db01’
’10.0.0.51/255.255.255.0’
4、修改用户密码
[root@controller ~]# mysqladmin -uroot -p123456 password '123'; mysqladmin修改密码
mysql> grant all on *.* to root@'localhost' identified by '123456'; grant修改密码
mysql> update mysql.user set password=PASSWORD('123') where user='root' and host='localhost'; update修改密码
mysql> set password= PASSWORD('123456'); set修改当前登录用户密码
二、企业中权限开通方法
1、all和all privileges结果一样

2、用户权限介绍
MySQL的权限定义:
作用对象:库、表
权限
INSERT,SELECT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER,
SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT,
CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE
![]()


归属
grant all privileges on *.* to oldboy@’10.0.0.%’ identified by ‘123’; 权限 作用对象 归属 密码
作用对象分解
*.* [当前MySQL实例中所有库下的所有表]
wordpress.* [当前MySQL实例中wordpress库中所有表(单库级别)]
wordpress.user [当前MySQL实例中wordpress库中的user表(单表级别)]
3、企业中权限的设定
#一般给开发创建用户权限 grant select,update,delete,insert on *.* to oldboy@’10.0.0.%’ identified by ‘123’;
4、结论
1、如果在不同级别都包含某个表的管理能力时,权限是相加关系。
2、但是我们不推荐在多级别定义重复权限。
3、最常用的权限设定方式是单库级别授权,即:wordpress.*
三、MySQL连接管理
1、连接工具
1)MySQL自带的连接工具:mysql
常见的特定于客户机的连接选项:
-u:指定用户 -p:指定密码 -h:指定主机 -P:指定端口 -S:指定sock -e:指定SQL --protocol=name:指定连接方式
2)第三方的连接工具:sqlyog、navicat
应用程序连接MySQL:需要加载对应语言程序的API
2、连接方式
1)scoket连接:
mysql -uroot -poldboy123 -S/application/mysql/tmp/mysql.sock
mysql -uroot -poldboy123
2)TCP/IP连接
mysql -uroot -poldboy123 -h10.0.0.51 -P3306
3、当数据库服务器没有公网IP时,可用第三方工具跳转连接
1)填写mysql所在主机内网IP

2)填写可连接至数据库服务器的跳板机公网IP

四、MySQL启动关闭流程
1、关闭流程图

启动mysql:
/etc/init.d/mysqld start ------> mysqld_safe ------> mysqld
关闭mysql:
/etc/init.d/mysqld stop mysqladmin -uroot -poldboy123 shutdown kill -9 pid ? killall mysqld ? pkill mysqld ?
kill杀死mysql容易出现的问题:
1)如果在业务繁忙的情况下,数据库不会释放pid和sock文件
2)号称可以达到和Oracle一样的安全性,但是并不能100%达到
3)在业务繁忙的情况下,丢数据(补救措施,高可用)
五、MySQL实例初始化配置
1、初始化实例拓扑图

1)预编译:cmake去指定,硬编码到程序当中去
2)在命令行设定启动初始化配置
--skip-grant-tables --skip-networking --datadir=/application/mysql/data --basedir=/application/mysql --defaults-file=/etc/my,cnf --pid-file=/application/mysql/data/db01.pid --socket=/application/mysql/data/mysql.sock --user=mysql --port=3306 --log-error=/application/mysql/data/db01.err
3)初始化配置文件(/etc/my.cnf)
配置文件读取顺序:
/etc/my.cnf /etc/mysql/my.cnf $MYSQL_HOME/my.cnf(前提是在环境变量中定义了MYSQL_HOME变量) defaults-extra-file (类似include) ~/my.cnf

注意:--defaults-file:默认配置文件,如果使用./bin/mysqld_safe 守护进程启动mysql数据库时,使用了 --defaults-file=<配置文件的绝对路径>参数,这时只会使用这个参数指定的配置文件。
优先级结论:
1)、命令行 2)、defaults-file 3)、配置文件(最后一个生效) 4)、预编译
2、初始化配置文件的使用
初始化配置文件功能:
1)影响实例的启动(mysqld)
2)影响到客户端(mysql、mysqldump、mysqladmin)
如何配置初始化配置文件:
1)配置标签分类
[client]所有客户端程序
mysql
mysqldump
[server]所有服务器程序
mysqld
mysqld_safe