用户管理权限、mysqld_safe与mysqld与mysql区别及参数

一、MySQL 用户相关操作

1. 设置用户密码权限

1.设置用户和密码
[root@db02 scripts]# mysqladmin -uroot password 123

2.登录mysql
'正确且规范的方式:'
[root@db02 scripts]# mysql -u root -p
Enter password:

'登陆时没有使用密码报错'
[root@db01 ~]# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

'登陆时使用密码错误报错'
[root@db01 ~]# mysql -uroot -p234
Warning: Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
3.)查看所有用户
mysql> select user,host from mysql.user;

4.)删除用户
# root@'::1'  为ipv6用户,可以删除
mysql> drop user root@'::1';

5.)'删除mysql所有用户'
mysql> delete from mysql.user where 1=1;

6.)创建用户
    '这样建立的用户没有任何权限'
    mysql> create user root@'localhost';
    mysql> create user root@'localhost' identified by '123';

    '标准方式'
    mysql> grant all on *.* to root@'localhost' identified by '123';
    '需要字段一一对应,非常麻烦'
    mysql> insert ...            

7.)修改用户密码
    1.命令行使用mysqladmin修改密码
    [root@db02 ~]# mysqladmin -uroot -p123 password 
    2.update修改用户密码
    mysql> update mysql.user set password=PASSWORD('123') where user='root' and host='localhost'    
    3.修改当前用户密码
    mysql> set password=password('123') 
    4.grant修改密码
    mysql> grant all on *.* to root@'localhost' identified by '123';
    5.alter修改密码
    alter user root@'localhost' identified by '123';

    修改密码后需要刷新权限
    mysql> flush privileges;

# 8.0版本之前可以通过grant命令建立用户+授权.8.0之后必须先建用户,再授权.

8.)用户权限
#查看权限列表
mysql> show privileges;

#查看权限
mysql> show grants for lhd@'10.0.0.0/255.255.255.0';

#回收权限
mysql> revoke drop on *.* from lhd@'10.0.0.0/255.255.255.0';

#授权root@'localhost'对wordpress库下所有表拥有查看,插入,修改的权限,密码是123(最常用)
mysql> grant select,insert,update on wordpress.* to root@'localhost' identified by '123';    #指定权限单库授权

#在企业中,单列授权被称为脱敏
mysql> grant select(user) on mysql.user to root@'localhost' identified by '123';        #单列授权
' 注意,如果授权数据库中已经存在的用户则会授权叠加。'

扩展

# mysql授权表其他内容所在位置:
mysql.user : *.* (全局管理权限)
mysql.db: 库权限
mysql.tables_priv: 指定的表权限
mysql.columns_priv: 列的权限
mysql.procs_priv: 存储过程中的权限设置.

2. 误删用户或者忘记root密码

1)停止数据库
[root@db02 scripts]# systemctl stop mysqld

2)跳过授权表和网络启动
[root@db02 scripts]# mysqld_safe --skip-grant-tables --skip-networking &

3)插入新的用户或创建新管理员用户
方法一:
mysql> flush privileges;     #刷新授权表,并且载入授权表到内存.
mysql> grant all on *.* to root@'localhost' identified by '123' with grant option;

方法二:
insert into mysql.user values ('localhost','root',PASSWORD('123'),
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'Y',
'',
'',
'',
'',0,0,0,0,'mysql_native_password','','N');

4)关闭并重启数据库
[root@db01 ~]# mysqladmin -uroot -p123456 shutdown
或者[root@db01 ~]# /etc/init.d/mysqld stop
[root@db01 ~]# /etc/init.d/mysqld start

' 以上恢复操作必须刷新权限,执行mysql> flush privileges; '
' 如果不加with grant option 就会本root用户没有grant权限。'
'登陆时没有使用密码报错'
[root@db01 ~]# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

'登陆时使用密码错误报错'
[root@db01 ~]# mysql -uroot -p234
Warning: Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

3. 连接管理


查看远程和本地登录的用户

程序连接的驱动程序

  • 例如:
    yum install -y php-mysql
    pip3 install pymysql

官网下载地址:

连接后快捷键

?          #帮助
\c          '终止当前命令'
\r          '重连数据库   会刷新Connection id'
\d          #修改命令结束符
    \e      #写入文件,同时执行多条命令
\G          #垂直显示结果
\q          #退出数据库
    \g      #命令结束    相当于;
    \h      #帮助
    \t      #取消写入文件
\T          #将执行过程与结果写入一个文件
    \p      #打印一次命令
    \R      #修改命令提示符
source  (\.)  #读取sql文件
status  (\s)  #查看数据库状态
system  (\!)  #在数据库里执行命令行命令
use     (\u)  #切换数据库

prompt    (\R) Change your mysql prompt.
nopager   (\n) Disable pager, print to stdout.
pager     (\P) Set PAGER [to_pager]. Print the query results via PAGER.
charset   (\C) Switch to another charset. Might be needed for processing binlog with multi-byte charsets.
warnings  (\W) Show warnings after every statement.
nowarning (\w) Don't show warnings after every statement.

4. 命令

1. # help命令
    mysql> help select
2. # mysqladmin命令
    1)修改密码
    mysqladmin -uroot -p123 password 123456
    2)关闭数据库(一般多实例使用)
    mysqladmin -uroot -p123 -S /tmp/mysql.sock shutdown
    3)建库
    mysqladmin -uroot -p123 create zengdao
    4)删库
    mysqladmin -uroot -p123 drop zengdao
    5)查看数据库详细配置
    mysqladmin -uroot -p123 variables
    6)确认数据库是否启动
    mysqladmin -uroot -p123 ping
    7)查看数据库状态信息
    mysqladmin -uroot -p123 status
    8)刷新授权表
    '相当于在数据库中执行 flush privileges'
    mysqladmin -uroot -p123 reload
    9)刷新binlog
    '如果有主从,一定不要刷新binlog。'
    mysqladmin -uroot -p123 flush-log

5. 字符集

最早的字符集:ASCII码

中国的字符集:gbk,utf8,gbk2312
日本字符集:shift-JIS
韩国字符集:Euc-kr

万国编码:Unicode字符集

#常用的字符集:
    gbk:一个汉字占用2个字节
    utf8:一个汉字占用3个字节
    utf8mb4:一个汉字占用4个字节 ,支持Emoji表情

#字符集修改要求:
    包含关系才可以修改

#查看字符集:
    mysql> show charset;

6.初始化配置

源码安装 编译过程中初始化参数
配置文件 启动前设置/etc/my.cnf参数
启动脚本命令行 mysqld --参数 方式

1.配置文件的应用

2.配置文件的格式

  • [标签] : 区分不同程序参数的
    • [服务器端] : 负责服务器端运行的参数
      [mysqld]
      [mysql_safe]
      [server]

    • [客户端] : 影响本地客户端连接
      [mysql]
      [mysqldump]
      [client]

  • 配置参数


二、mysqld_safe与mysqld与mysql

  • mysqld_safe是一个基于mysqld的脚本,让用户不用直接修改mysqld二进制文件.而通过修改safe脚本实现想要的功能.
    mysqld_safe脚本会在启动MySQL服务器后继续监控其运行情况,并在其死机时重新启动它。
  • 后两种启动方式需要使用shutdown方式关闭
    • mysql> shutdown;
    • mysqladmin -uroot -p123 shutdown

用mysqld_safe脚本来启动MySQL服务器的做法在BSD风格的unix系统上很常见,非BSD风格的UNIX系统中的 mysql.server脚本其实也是调用mysqld_safe脚本去启动MySQL服务器的。

它通常做如下事情:
\1. 检查系统和选项。
\2. 检查MyISAM表。
\3. 保持MySQL服务器窗口。
\4. 启动并监视mysqld,如果因错误终止则重启。
\5. 将mysqld的错误消息发送到数据目录中的host_name.err 文件。
\6. 将mysqld_safe的屏幕输出发送到数据目录中的host_name.safe文件。

【mysqld】:是mysql的核心程序,用于管理mysql的数据库文件以及用户的请求操作。mysqld可以读取配置文件中的[mysqld]的部分
mysqld启动命令:

[root@localhost mysql]# bin/mysqld --defaults-file=/etc/mysql/my.cnf &

查看mysqld支持的选项:

[root@localhost mysql]# bin/mysqld --verbose --help

【mysqld_safe】:相当于多了一个守护进程,mysqld挂了会自动把mysqld进程拉起来
1.可以读取的配置部分[mysqld],[server],[myslqd_safe], 为了兼容mysql_safe也会读取[safe_mysqld]中的配置
2.调用的mysqld是可以在[mysqld_safe]中用-mysqld, --mysqld-version指定

mysqld_safe启动命令:

[root@localhost mysql]# bin/mysqld_safe --defaluts-file=/etc/mysql/my.cnf &

在Unix和NetWare中推荐使用mysqld_safe来启动mysqld服务器。

mysqld_safe增加了一些安全特性,例如当出现错误时重启服务器并向错误日志文件写入运行时间信息。

注释:为了保持同旧版本MySQL的向后兼容性,MySQL二进制分发版仍然包括safe_mysqld作为mysqld_safe的符号链接。但是,你不应再依赖它,因为再将来将删掉它。
默认情况下,mysqld_safe尝试启动可执行mysqld-max(如果存在),否则启动mysqld。该行为的含义是:
· 在Linux中,MySQL-Max RPM依赖该mysqld_safe的行为。RPM安装可执行mysqld-max,使mysqld_safe从该点起自动使用可执行命令。
· 如果你安装包括mysqld-max服务器的MySQL-Max分发版,后面升级到非-Max的MySQL版本,mysqld_safe仍然试图运行旧的 mysqld-max服务器。升级时,你应手动删除旧的mysqld-max服务器以确保mysqld_safe运行新的mysqld服务器。
要想越过默认行为并显式指定你想要运行哪个服务器,为mysqld_safe指定 --mysqld 或 --mysqld-version 选项。

mysqld_safe从选项文件的[mysqld]、[server]和 [mysqld_safe]部分读取所有选项。为了保证向后兼容性,它还读取 [safe_mysqld]部分,尽管在MySQL 5.1安装中你应将这部分重新命名为[mysqld_safe]。

三、mysqld_safe 的选项:

--help
显示帮助消息并退出。

--autoclose
(只在NetWare中)在NetWare中,mysqld_safe可以保持窗口。当你关掉mysqld_safe NLM时,窗口不按默认设置消失。相反,它提示用户输入:
**如果你想让NetWare自动关闭窗口,在mysqld_safe中使用--autoclose选项。

--basedir=path
MySQL安装目录的路径。

--core-file-size=size
mysqld能够创建的内核文件的大小。选项值传递给ulimit -c。
--datadir=path
数据目录的路径。

--defaults-extra-file=path
除了通用选项文件所读取的选项文件名。如果给出,必须首选该选项。

--defaults-file=path
读取的代替通用选项文件的选项文件名。如果给出,必须首选该选项。

--ledir=path
包含mysqld程序的目录的路径。使用该选项来显式表示服务器位置。

--log-error=path
将错误日志写入给定的文件。参见5.11.1节,“错误日志”。

--mysqld=prog_name
想要启动的服务器程序名(在ledir目录)。如果你使用MySQL二进制分发版但有二进制分发版之外的数据目录需要该选项。

--mysqld-version =suffix
该选项类似--mysqld选项,但你只指定服务器程序名的后缀。基本名假定为mysqld。例如,如果你使用--mysqld-version =max,mysqld_safe启动ledir目录中的mysqld-max程序。如果--mysqld-version的参数为空,mysqld_safe使用目录中的mysqld。

--nice=priority
使用nice程序根据给定值来设置服务器的调度优先级。

--no-defaults
不要读任何选项文件。如果给出,必须首选该选项。

--open-files-limit=count
mysqld能够打开的文件的数量。选项值传递给 ulimit -n。请注意你需要用root启动mysqld_safe来保证正确工作。

--pid-file=path
进程ID文件的路径。

--port=port_num
用来帧听TCP/IP连接的端口号。端口号必须为1024或更大值,除非MySQL以root系统用户运行。

--skip-character-set-client-handshake
忽略客户端发送的字符集信息,使用服务器的默认字符集。(选择该选项,MySQL的动作与MySQL 4.0相同)。

--socket=path
用于本地连接的Unix套接字文件。

--timezone=zone
为给定的选项值设置TZ时区环境变量。从操作系统文档查阅合法的时区规定格式。

--user={user_name | user_id}
以用户名user_name或数字用户ID user_id运行mysqld服务器。(本文中的“用户”指系统登录账户,而不是 授权表中的MySQL用户)。

执行mysqld_safe时,必须先给出--defaults-file或--defaults-extra-option,或不使用选项文件。
该命令将不使用选项文件,因为第一个参数不是选项文件:
mysqld_safe --port=3306 --defaults-file=/etc/mysql/my.cnf
相反,使用下面的命令,则可以使用选项文件:
mysqld_safe --defaults-file=/etc/mysql/my.cnf --port=3306

一般情况mysqld_safe脚本可以启动从源码或二进制MySQL分发版安装的服务器,即使这些分发版将服务器安装到稍微不同的位置。(参见2.1.5节,“安装布局”)。

mysqld_safe期望下面的其中一个条件是真的:
1)可以根据调用mysqld_safe的目录找到服务器和数据库。在二进制分发版中,mysqld_safe看上去在bin和data目录的工作目录下。对于源码分发版,为libexec和var目录。如果你从MySQL安装目录执行mysqld_safe应满足该条件(例如,二进制分发版为/usr/local/mysql)。
2)如果不能根据工作目录找到服务器和数据库,mysqld_safe试图通过绝对路径对它们定位。典型位置为/usr/local/libexec和 /usr/local/var。实际位置由构建分发版时配置的值确定如果MySQL安装到配置时指定的位置,它们应该是正确的。

因为mysqld_safe试图通过工作目录找到服务器和数据库,只要你从MySQL安装目录运行mysqld_safe,可以将MySQL二进制分发版安装到其它位置:
shell> cd mysql_installation_directoryshell> bin/mysqld_safe &如果mysqld_safe失败,即使从MySQL安装目录调用仍然失败,你可以指定--ledir和--datadir选项来指示服务器和数据库在你的系统中的安装目录。

一般情况,你不应编辑mysqld_safe脚本。相反,应使用命令行选项或my.cnf选项文件的[mysqld_safe]部分的选项来配置mysqld_safe。一般不需要编辑mysqld_safe来正确启动服务器。
但是,如果你编辑,将来升级MySQL后会覆盖你修改的mysqld_safe版本,因此你应对你修改的版本进行备份以便将来重装。
在NetWare中,mysqld_safe是一个NetWare Loadable Module (NLM),从原Unix shell脚本移植。它执行:
\1. 检查系统和选项。
\2. 检查MyISAM表。
\3. 保持MySQL服务器窗口。
\4. 启动并监视mysqld,如果因错误终止则重启。
\5. 将mysqld的错误消息发送到数据目录中的host_name.err 文件。
\6. 将mysqld_safe的屏幕输出发送到数据目录中的host_name.safe文件

Copyright © 2009 - Now . XPBag.com . All rights Reserved.
夜心的小站 » 用户管理权限、mysqld_safe与mysqld与mysql区别及参数

发表评论

提供最优质的资源集合

立即查看 了解详情