MySQL基础管理
一、用户管理
1.1、用户的作用
Linux用户:
登陆Linux系统
管理Linux对象:Linux一切皆文件
MySQL用户:
登陆管理MySQL数据库
管理MySQL对象:表
1.2、用户的定义
Linux用户:
用户名
MysQL用户:
用户名@'白名单'
白名单?
地址列表,允许白名单的IP登录MySQL,管理MysQL。
oldguo@ 'localhost': oldguo用户能够通过本地登录MySQL(socket)
oldguo@'10.0.0.10': oldguo用户能够通过10.0.0.10远程登录MySQL服务器
oldguo@'10.0.0.%': oldguo用户能够通过10.0.0.xx/24远程登录MySQL服务器
oldguo@'10.0.0.5%': oldguo用户能够通过10.0.0.50-59/24远程登录MySQL服务器
oldguo@'10.o.o.0/255.255.254.o'
oldguo@'%' 网络通就可以登陆
oldguo@'db01' 主机名登陆
oldguo@ ' dbo1.oldguo.com' 域名登陆
1.3、用户管理
查:
show databases;
use mysql;
select user ,host ,authentication_string(密码) from mysql.user;
+---------------+-----------+-------------------------------------------+
| user | host | authentication_string |
+---------------+-----------+-------------------------------------------+
| root | localhost | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
+---------------+-----------+-------------------------------------------+
3 rows in set (0.00 sec)
增:
# 创建用户不设置密码
create user tzh@'localhost';
# 创建用户且设置密码
create user identified by '123';
改:
alter user tzh@'localhost' identified by '123'; #修改密码也行
删:
drop user zh@'192.168.1.%';
注意:8.0以后必须得先建用户再授权!8.0以前可以用grant命令,新建用户且授权!
1.4、权限管理
- 权限表现方式:
- Linux中:
- wrx
- MySQL中:
- 具体的命令
- Linux中:
查看可权限命令:
show privileges;
+-------------------------+------------------+-----------------------+
| Privilege | Context | Comment |
授权操作:
8.0前:
grant 权限1,权限2,...,权限n on 对象(表明或者库名) to 用户 indentified by '密码' with Grant option ;
# 多次grant多次使用,权限是叠加的
8.0后:
create user 用户名字 identified by '密码';
grant权限on对象to 用户;
权限:
权限:
ALL :管理员(不包括with Grant option)
权限1,权限2,权限3,... :普通用户(业务用户,开发用户)
给别的用户授权 :with Grant option 放最后面
对象:库,表
*.*(全部授权) --——->chmod -R 755/ root管理员
oldguo(库).* ----->chmod -R 755 /oldguo普通用户 oldguo库下的所以表的权限
oldguo.tl(表) ————->chmod -R 755 /oldguo/t1
例子:
grant all on *.* to tzh1@'192.168.1.%' identified by '123' with grant option;
# 查看用户授权
show grants for tzh1@'192.168.1.%';
扩展:
MySQL授权表:
user库中
db : app.*
tables_priv : app.t1
columns_priv :列
回收权限:
revoke delete on tzh.* from tzh1@'192.168.1.%';
revoke delete on *.* from tzh1@'192.168.1.%';
二、本地管理员用户密码忘记
跳过授权表、跳过网络连接
pkill mysqld
# 停止数据库后,用mysqld_safe方式启动
mysqld_safe --skip-grant-tables --skip-networking &
或者
service mysqld start --skip-grant-tables --skip-networking 意外发现
# 手工加载授权表,刷新权限,给管理器账号设置密码
mysql> flush privileges;
mysql> alter user root@'localhost' identified by '123456';
#干掉mysql,再次启动
pkill mysqld
systemctl start mysqld
三、连接管理
图解:
3.1、自带客户端命令
mysql 常用参数:
-u 用户
-p 密码
-h IP
-P 端口
-S socket文件
-e 免交互执行命令
< 导入SQL脚本
socket :
前提:数据库中必须实现授权oldguo@ 'localhost'用户
mysql -utzh -p123 -s /tmp/mysql.sock
mysql -utzh -p -s /tmp/mysql.sock大实**太推荐方式
mysql -p123 -s /tmp /mysql.sock
mysql
mysql -uroot -p123
-----------------------------------------------------
tcpip:
前提:必须提前创建好,可以远程连接的用户(例如: tzh@'10.0.0.%')。
mysql -utzh -p123 -h 1o.o.0.51 -P 3306
mysql -utzh -p123 -h 1o.o.0.51
mysql -utzho -p -h 10.0.0.51 -P 3306
查看连接是远程还是本地连接:
show processlist;
mysqldump备份工具
mysqladmin管理工具
3.2、程序连接
java、go、python、php
四、初始化配置
4.1、作用
控制MySQL的启动
影响到客户端的连接
4.2、初始化配置的方法
1、预编译
2、配置文件(所有启动方式)
3、命令行参数 (仅限于 mysqld_safe mysqld)
4.3、配置文件作用
配置文件读取顺序:
以最后读取到的配置文件为准!!!
但是,如果启动时加入了--defaults-file=xxxx时,以上的所有文件都不会读取.
[root@master ~]# mysqld --help --verbose |grep my.cnf
/etc/my.cnf --> /etc/mysql/my.cnf --> /usr/local/mysql/etc/my.cnf --> ~/.my.cnf
配置文件的书写方式:
[标签]
配置项=xxxx
标签类型:服务端、客户端
服务器端标签:
[mysqld]
[mysqld_safe]
[server]
客户端标签:
[mysql]
[mysqldump]
[client]
配置文件的示例展示:
[root@db01 ~]# cat /etc/my.cnf
[mysqld] #服务器端标签
user=mysql #负责数据库管理用户
basedir=/app/database/mysq1 #软件的安装位置
datadir=/data/ 3306 #数据的存放位置
server_ id=6 #标识节点的唯一编号(主从有用)
port=3306 #端口号
socket=/ tmp/mysql . sock #套接字文件
[mysq1] #客户端标签
socket=/ tmp/mysql.sock #读取socket文件的位置点
五、mysql启动、关闭
启动方式,原理图
启动
systemctl start mysqld ----> mysql.server ----> mysqld_ safe ---> mysqld
mysqld_ safe和mysqld ,可以在启动数据库时,加入自己执行的参数,例如
-- skip-grant-tables
-- skip-networking
-- defaults-file=/opt/my. cnf
关闭
systemctl stop mysqld
service mysqld stop
/etc/init.d/mysq1d stop
mysqladmin -uroot -p123 shutdown
mysql -uroot -p123 -e "shutdown"