目录

MySql运维和权限

MySql数据目录初始化

第一次启动MySql的时候需要进行初始化,也就是初始化数据存放的目录(注意这个目录必须为空,或则不存在)这个目录路径可以在配置文件里面配置

[mysqld]
port=3306
datadir=/home/lyer/tmp/data

默认的数据存放路径是:

$MYSQL_HOME/data

MySql服务器启动会读取配置文件my.cnf,配置文件查找顺序为:

/etc/my.cnf
/etc/mysql/my.cnf
$MYSQL_HOME/my.cnf
--default-extra-file #命令行自定配置文件路径
~/.my.cnf

服务器会依次查找这些路径去读取并且合并配置

下面是数据库初始化命令

mysqld --initialize #初始化 会打印初始的root密码在终端 第一次登入需要密码
mysqld --initialize-insecure #初始化并且设置root密码为空 也就是初次不需要密码

初始化之后我们需要登入到数据库,并且需要修改root密码为自定义的密码

mysql -uroot -p #没有密码则回车即可 有初始密码则需要输入
alter user 'root'@'localhost' identified by '55555';

如果觉得每次输入用户密码指定host麻烦的话则可以在my.conf里面配置客户端

[client]
host=127.0.0.1
user=root
password=55555

这样的话直接输入mysql就会读取客户端配置,这样就不需要输入密码了

MySql服务启动、停止

一般通过$MYSQL_HOME/support-files/mysql.server服务启动脚本启动,此脚本还会启动一个监控进程mysqld-safe,此进程会监控mysql服务的运行状态,如果出错了则会将错误日志记录起来xxx.err,还会帮助mysql服务重启

$MYSQL_HOME/support-files/mysql.server #不带参数执行可以查看Useage
mysql.server start #启动 (第一次启动服务器需要首先初始化数据库)
mysql.server status #查看mysql服务状态
mysql.server stop

用户管理

和用户相关的信息都保存在mysql.user表中,密码都是加密存储的

select host,user from user;

User列表示用户名,Host列表示允许连接的客户端主机地址,为localhost则表示只允许本地连接

创建一个用户

create user lyer identified by '66666'; --不指定host的话默认全部可以连
create user 'lyer'@'%' identified by '55555'; --%表示允许全部IP连接
create user 'lyer'@'112.23.21.1' identified by '55555'; --指定IP
create user 'lyer'@'112.23.21.%' identified by '55555'; --指定IP网段可连

修改用户密码

alter user 'root'@'localhost' identified with mysql_native_password BY '77777';  

修改用户可连接的IP

update user set host='localhost' where user='lyer';

删除用户

drop user 'lyer'@'localhost';

查看当前登入用户

select user();

用户权限

权限类型

类型描述
ALL所有可用的权限
CREATE创建库、表和索引
LOCK TABLES锁定表
ALTER修改表
DELETE删除表
INSERT插入表或列
UPDATE更新表
SELECT检索表或列的数据
CREATE_VIEW创建视图
SHOW DATABASES列出数据库
DROP删除库、表和视图

授权

grant <privileges> on <database>.<table> to 'username'@'localhost' WITH GRANT OPTION; --with grant option 用户表示可以将自己拥有的权限授予别人
grant select,delete on test.* to 'lyer'@'%'; --test.* 表示允许对test数据库中所有表进行select和delete
grant show databases on *.*  to lyer@'%';

查看某个用户的权限

show grants for lyer@'%';

回收权限

revoke <privileges> on <database>.<table> from 'username'@'localhost';
revoke show databases on *.* from lyer@'%';
revoke select,delete on test.* from lyer@'%';

参考

https://www.yuque.com/yinjianwei