MySQL基础管理

1.用户管理

1.1用户的作用

Linux中用户的作用:登录系统,管理系统
MySQL中用户的作用:登录MySQL数据库,管理MySQL对象(表)

1.2用户的定义

MySQL用户:用户名@"白名单"
白名单?    地址列表,允许白名单的IP登录MySQL,管理MySQL
haci@"localhost"  :haci用户能够通过本地登录MySQL(socket)
haci@"10.0.0.10"   :haci用户能够通过10.0.0.0远程登录MySQL服务器
haci@"10.0.0.%"   :haci用户能够通过10.0.0.xx/24远程登录MySQL服务器
haci@"10.0.0.5%"   :...50-59...

1.3用户的管理

查:
user表
select user,host,authentication_string from mysql.user;

增:
create user haci@"localhost";
create user heeci@"10.0.0.%" identified by "123";

改:
(修改密码)
alter user haci@"localhost" identified by "1256"

删:
drop user haci@"10.0.0.%";

# 注意:8.0版本以前,是可以通过grant命令 建立用户+授权

2.权限管理

2.1权限管理的作用

限制不同的用户对数据库对象,有哪些管理能力

2.2权限的表现方式

show privileges;  #查看权限

权限表

2.3授权/回收权限的操作

(1)语法:

#方式一:(在创建用户时授权,8.0后不支持)
grant 权限 on 对象 to 用户 identified by "密码"; 
#方式二:(先创建用户,后授权)
create user 用户 identified by "密码";
grant 权限 on 对象 to 用户
#方式三:
grant 权限1,权限2,权限3 on 对象 to 用户 identified by "密码" with grant option;

关于权限的说明:
ALL :管理员的权限为all
权限1,权限2,权限3 :普通用户(业务开发,业务用户)
grant option :拥有给别的用户授权的权限
关于对象的说明:库,表

*.*   : 管理员(所有库下的所有表)
haci.*  : 库   普通用户
haci.t1  单表

(2)授权的例子

#(1)创建并授权管理员用户,能够通过10.0.0.%
grant all on *.* to haci@"10.0.0.%" identified by "123" with grant option;
#查看用户权限
show grants for haci@"10.0.0.%";
select * from mysql.user\G;  #竖行显示用户信息 (基于全局级别的授权查看)

#(2)
grant update,create,select,insert,delete on app.* to app@"10.0.0.%" identified by "123";
show grants for app@"10.0.0.%";
select * from mysql.db\G;  #竖行显示用户信息 (基于库级别的授权查看)

扩展:
MySQL的授权表:

user        			: *.*
db           			:app.*
tables_priv  		:app.t1
columns_priv   :列级别的授权

(3)回收权限
MySQL中不能通过重复授权来修改权限,只能通过回收权限的方式来修改

revoke create on app.* from app@"10.0.0.%";
show grants for app@"10.0.0.%";

2.4本地超级管理员密码忘记

MySQL程序中那个部分负责用户密码验证? 连接层:tcp/ip,socket;用户验证;
数据库启动的时候将连接层的用户验证关掉

–skip-grant-tables : 跳过授权表(此时任何用户都可连接,较危险)
–skip-networking :跳过tcp/ip连接(通过该参数,关闭了远程连接,此时,只有本地用户可以连接)

操作:
(1)关闭数据库

/etc/init.d/mysqld stop
#或者
systemctl stop mysqld

(2)使用安全模式启动重新启动MySQL服务

mysqld_safe ----skip-grant-tables --skip-networking & 
# 或者
service mysqld start --skip-grant-tables --skip-networking

(3)允许本地可以无密码登录了

mysql

(4)修改密码

#在安全模式下已经跳过了授权表,所以需要先手动加载授权表才能修改密码
flush privileges;
#修改密码
alter user root@"localhost" identified by "123";

(5)重启数据库到正常模式

service mysqld restart

3.mysql的连接管理

3.1MySQL自带的客户端

(1)mysql(装好MySQL就已经有了)

参数列表:
	-u  用户名
	-p  密码
	-S	本地socket文件地址
	-h	数据库IP地址
	-P  数据库端口号
	-e	免交互执行数据库命令
	<		导入sql脚本
#socket:
		前提:数据库中必须创建haci@"localhost"用户
		mysql -uhaci -p123 -S /tmp/mysql.socket
		mysql -uhaci -p -S /tmp/mysql.socket #(推荐)
		mysql -p123 -S /tmp/mysql.socket
		mysql
		mysql -uroot -p123
#tcp/ip:
		前提:必须提前创建好,可以远程连接的用户(例如:haci@"10.0.0.%")
		mysql -uhaci -p123 -h 10.0.0.51 -P 3306
		mysql -uhaci -p123 -h 10.0.0.51 # 默认3306
		mysql -uhaci -p -h 10.0.0.51 -P 3306
#root管理员如何区分用户是本地还是远程登陆:
show procelisst; #可以查看
-e的应用:如从数据库中在登录时立即取值
	mysql -uroot -p123 -e "select @@innodb_flush_log_at_trx_commit;"
>的应用:导入脚本
	mysql -uroot -p123 < /root/world.sql

(2)mysqldump 备份工具
(3)mysqladmin 管理工具

3.2MySQL远程客户端(开发工具)

前提:必须提前创建好,可以远程连接的用户(如:haci@“10.0.0.%”)

3.3程序连接

yum install -y php-mysql
pip3 install pymysql

4.配置管理

4.1初始化配置的方式

  1. 远程安装---->编译过程中初始化参数
  2. 配置文件---->数据库启动之前,设定配置文件参数 /etc/my.cnf
  3. 启动脚本命令行---->mysqld_safe --skip-grant-tables --skip-networking &

4.2配置文件应用

  1. 配置文件的读取顺序
mysqld help --verbose | grep my.cnf   #查看MySQLd自动读取的配置文件位置
#读取顺序如下
/etc/my.cnf  --->  /etc/mysql/my.cnf  -->  /usr/local/mysql/etc/my.cnf  ---> ~/.my.cnf

手动定制配置文件位置点

/opt/my.cnf,/data/3307/my.cnf,/data/3306/my.cnf

mysqld --defaults-file=/opt/my.cnf &  #指定配置文件位置点
mysqld_safe --defaults-file=/opt/my.cnf &
  1. 配置文件的书写格式
cat /etc/my.cnf
[mysqld]     					#服务器端标签
user=mysql   					#负责数据库管理用户
basedir=/app/database/mysql  	#软件的安装位置
datadir=/app/3306  				#数据的存放位置
server_id=6                     #标识节点的唯一编号
port=3306 						#端口号
socket=/tmp/mysql.socket  		#套接字文件
[mysql] 						#客户端标签
socket=/tmp/mysql.socket  		#读取socket文件的位置点

说明:
[标签]
配置参数=xxx
标签是用来区分不同程序的参数:
[服务器端]:负责数据库服务端运行参数设定
常见:[mysqld],[mysqld_safe],[server] 代表所有服务端

常见:[mysql],[mysqldump],[client]

注意:
my.cnf port=3306
mysqld_safe --port=3307 & #命令行优先

4.MySQL的启动和关闭

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值