mysql用户管理
1. mysql 的登录方式有2种
# 网络连接串
mysql -uroot -p123456 -hlocalhost;
# 通过套接字
mysql -uroot -p123456 -S /data/mysql/tmp/mysql.sock
2. mysql启动过程
① 启动后台守护进程,并生成工作线程
② 预分配内存结构mysql处理数据使用
3 实例是什么
mysql的后台进程+线程+预分配的内存结构
4 存储引擎
存储数据
检索数据
通过索引查找数据
5 mysql的连接管理
①本地连接
mysql -uroot -p123456 -h localhost
mysql -uroot -p123456 -S sock_dir
②远程连接
mysql -utest -p123456 -h 10.0.0.87
6 mysql 用户及权限基本管理
权限: 功能:针对不同用户设置对不同对象管理能力 select update delete insert create 。。。
权限范围:
*.* :全局范围oldboy.* :单库级别oldboy.t1 : 单表级别
grant all on wordpress.* to wordpress@'10.0.0.%' identified by '123456'; 权限 权限范围 用户 密码
7 mysql的启动和关闭
① mysql的启动流程
mysql.server ---启动----> mysqld_safe ---启动-----> mysqld
↑ ↑
|启动 | 启动
| |
service mysql start ./bin/mysqld_safe &
② mysql数据库的关闭
mysqladmin -uroot -p123456 shutdown
/etc/init.d/mysqld stop
kill -9
8 mysql 启动参数设置
① 预编译时候设置参数 参数会硬编码到程序中
② 命令行方式设定启动参数
③ 初始化的配置文件
优先级: ② > ③ > ①
9 /etc/my.cnf 影响了什么
① 影响了数据启动
[mysqld]
[mysqld_safe]
[server]
②影响了到数据库的链接
[mysql]
[mysqladmin]
[mysqldump]
[client]
10 数据库配置文件
[mysqld]
basedir=/application/
mysql
datadir=/application/mysql/
data
socket=/application/mysql/tmp/
mysql.sock
port=
3306
server_id=
10
log-error=/var/log/
mysql.log
log-bin=/application/mysql/data/mysql-
bin
binlog_format=
row
skip_name_resolve
[mysql]
socket=/application/mysql/tmp/mysql.sock
skip_name_resolve 禁止dns查询,解决远程连接慢问题
11 找回mysql root 密码
② 先停mysql服务
/etc/init.d/mysql stop
② 使用 mysqld_safe附带的 --skip-grant-tables (忽略授权登陆验证)启动MySQL服务
mysqld_safe --skip-grant-tables --user=mysql >/dev/
null 2>&
1 &
③ 登陆mysql
mysql
④ 修改密码
use mysql;
update mysql.user set password=password(
'123456') where user=
'root' and host=
'localhost';
⑤重启mysql
二.配置多实例
1 创建多个目录
[root@db2 ~]# mkdir -p /data/330{7,8,9}
2 准备多套配置文件
[root@db2 ~]# cat /data/3307/my.cnf
[mysqld]
basedir=/data/mysql
datadir=/data/3307
server-id=3307
port=3307
log-bin=/data/3307/mysql-bin socket=/data/3307/mysql.sock log-error=/data/3307/mysql.log [root@db2 ~]# cat /data/3308/my.cnf [mysqld] basedir=/data/mysql datadir=/data/3308 server-id=3308 port=3308 log-bin=/data/3308/mysql-bin socket=/data/3308/mysql.sock log-error=/data/3308/mysql.log [root@db2 ~]# cat /data/3309/my.cnf [mysqld] basedir=/data/mysql datadir=/data/3309 server-id=3309 port=3309 log-bin=/data/3309/mysql-bin socket=/data/3309/mysql.sock log-error=/data/3309/mysql.log
3 初始化多套数据
[root@db2 ~]# /data/mysql/scripts/mysql_install_db --basedir=/data/mysql/ --datadir=/data/3307 --user=mysql
[root@db2 ~]# /data/mysql/scripts/mysql_install_db --basedir=/data/mysql/ --datadir=/data/3308 --user=mysql
[root@db2 ~]# /data/mysql/scripts/mysql_install_db --basedir=/data/mysql/ --datadir=/data/3309 --user=mysql
4 启动mysql 实例
[root@db2 ~]# mysqld_safe --defaults-file=/data/3307/my.cnf &
[root@db2 ~]# mysqld_safe --defaults-file=/data/3308/my.cnf &
[root@db2 ~]# mysqld_safe --defaults-file=/data/3309/my.cnf &
5 检查进程是否存在
[root@db2 ~]# netstat -lnp | grep 330
tcp 0 0 :::3307 :::* LISTEN 24307/mysqld
tcp 0 0 :::3308 :::* LISTEN 24477/mysqld
tcp 0 0 :::3309 :::* LISTEN 24829/mysqld
unix 2 [ ACC ] STREAM LISTENING 108504 24307/mysqld /data/3307/mysql.sock
unix 2 [ ACC ] STREAM LISTENING 108634 24477/mysqld /data/3308/mysql.sock unix 2 [ ACC ] STREAM LISTENING 109335 24829/mysqld /data/3309/mysql.sock
6 登陆mysql实例
[root@db2 ~]# mysql -S /data/3307/mysql.sock -e "show variables like 'server_id';"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id | 3307 |
+---------------+-------+
[root@db2 ~]# mysql -S /data/3308/mysql.sock -e "show variables like 'server_id';"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id | 3308 |
+---------------+-------+
[root@db2 ~]# mysql -S /data/3309/mysql.sock -e "show variables like 'server_id';"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id | 3309 |
+---------------+-------+
7 停mysql 实例
[root@db2 ~]# mysqladmin -S /data/3307/mysql.sock shutdown
[root@db2 ~]# mysqladmin -S /data/3308/mysql.sock shutdown
[root@db2 ~]# mysqladmin -S /data/3309/mysql.sock shutdown
8 修改多实例密码
mysqladmin -uroot -S /data/3307/mysql.sock -p"123123" password "123456"
9 mysql多实例的启动脚本
#!/bin/
bash
##############################
# mysql多实例的启动脚本
# augustyang
# version 1.0
##############################
. /etc/init.d/
functions
port=
3307
mysql_user=
"root"
Cmdpath=
"/data/mysql/bin"
mysql_sock=
"/data/${port}/mysql.sock"
mysqld_pid_file_path=/data/
3307/
3307.pid
start(){
if [ ! -e
"$mysql_sock" ];
then
/bin/bash ${Cmdpath}/mysqld_safe --defaults-
file=/data/${port}/my.cnf --pid-
file=${mysqld_pid_file_path}
2>&
1 > /dev/
null &
sleep 3
if [ -e
"$mysql_sock" ];
then
action "Starting Mysql success" /bin/
true
else
action "mysqld-3307 process already exists" /bin/
true
fi
else
action "Mysql is running" /bin/
true
exit 1
fi
}
stop(){
if [ ! -e
"$mysql_sock" ];
then
action "MySQL--3307 server PID file could not be found! " /bin/
false
return 2
else
mysqld_pid=$(
cat "$mysqld_pid_file_path")
if (
kill -
0 $mysqld_pid
2>/dev/
null);
then
kill $mysqld_pid
sleep 2
fi
if [ ! -e
"$mysql_sock" ];
then
action "MySQL--3307 is stopped " /bin/
true
return 2
fi
fi
}
restart(){
printf "Restarting Mysql...\n"
stop
sleep 2
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*
)
printf "Usage: /data/${port}/mysql {start|stop|restart}\n"
esac
mysql 多实例的启动脚本
mysql 多实例的启动脚本
10 找回多实例 mysql密码
① 停 多实例mysql
② 启动数据库时加 --skip-grant-tables 参数注意 该参数要放在结尾
mysqld_safe --defaults-
file=/data/
3307/my.cnf --skip-grant-tables >/dev/
null 2>&
1 &
③ 登陆
mysql -S /data/
3307/mysql.sock
④修改密码
update mysql.user set password=password(
'123456') where user=
'root' and host=
'localhost';
flush privileges;
⑤重启 mysql
三 mysql 用户 管理
1. 收回无效的用户
mysql
> drop user "root"@"::
1";
Query OK, 0 rows affected (
0.00 sec)
mysql> drop user ""@"localhost";
Query OK, 0 rows affected (
0.00 sec)
mysql> drop user ""@"web02";
Query OK, 0 rows affected (
0.00 sec)
mysql> drop user "root"@"web02";
Query OK, 0 rows affected (
0.00 sec)
mysql> select user,host
from mysql.
user;
+------+-----------+
| user | host
|
+------+-----------+
| root
| 127.0.
0.1 |
| root
| localhost
|
+------+-----------+
2 rows
in set (
0.00 sec)
2. 权限管理
grant all on ysl.
* to test@
'10.0.0.%' identified
by '123456';
-- 权限 权限范围 用户 范文 密码
grant SELECT,
INSERT,
UPDATE,
DELETE,
CREATE,
DROP on testdb.
* to zabbix@
'10.0.0.%';
创建用户并授权
-- 创建用户并授权
grant all on *.
* to root@
'10.0.0.%' identified
by '123456';
3. 查询用户的权限
mysql> show grants
for test@
'%';
+--------------------------------------------------------------------------------------------------------------+
| Grants
for test@
% |
+--------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.
* TO 'test'@
'%' IDENTIFIED
BY PASSWORD
'*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' |
+--------------------------------------------------------------------------------------------------------------+
1 row
in set (
0.00 sec)
4. 收回权限
mysql
> revoke create,
drop on *.
* from ysl@
'%';
Query OK, 0 rows affected (
0.00 sec)
mysql
> revoke all on *.
* from ysl@
'%';
Query OK, 0 rows affected (
0.00 sec)
转载于:https://www.cnblogs.com/augustyang/p/10907565.html