mysql业务字段管理工具_常见的MySQL管理工具

本文详细介绍了MySQL数据库中用户授权、权限管理、密码恢复等关键操作步骤,包括如何通过命令行进行用户授权、撤销权限、更新密码及恢复遗忘的密码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

常见的MySQL管理工具

部署

# rpm -q httpd

# rpm -q php

# rpm -q php-mysql

# rpm -qa | grep mysql

# yum -y install httpd php php-mysql

# systemctl start httpd

# systemctl enable httpd

vim /var/www/html/test.php

phpinfo();

?>

在真机试着访问50主页的网页文件: firefox http://192.168.4.50/test.php

# tar -zxvf phpMyAdmin-2.11.11-all-languages.tar.gz -C /var/www/html/

# cd /var/www/html/

# mv phpMyAdmin-2.11.11-all-languages/ phpmyadmin

# chown -R apache:apache phpmyadmin/

# cd phpmyadmin/

# cp config.sample.inc.php config.inc.php

# vim /var/www/html/phpmyadmin/config.inc.php

:set nu 查看行号

17 $cfg['blowfish_secret'] = 'plj123'; 单引号里可以随意添加单词'plj123'

31 $cfg['Servers'][$i]['host'] = 'localhost'; 不用改这行,这是访问本机的数据库服务。除非数据库在别机,可写'数据库所在主机的ip'

:wq 保存后退出

在真机试着访问50主页的网页文件: firefox http://192.168.4.50/phpmyadmin

用户名:root 密码:123456

-------------------------------------------------------------------------------------------------------------------------------------------

在网页用图形界面新建库44,表t1

然后用命令行查看,可以看到新建的库和表

mysql> use db44;

mysql> show tables;

+----------------+

| Tables_in_db44 |

+----------------+

| t1 |

+----------------+

mysql> desc t1;

+-------+-------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| name | varchar(10) | NO | | NULL | |

| age | tinyint(4) | YES | | NULL | |

+-------+-------------+------+-----+---------+-------+

真机操作

# which mysql

/usr/bin/which: no mysql in (/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin)

[root@room9pc01 ~]# yum -y install mariadb

# mysql -h192.168.4.50 -uroot -p123456

ERROR 1130 (HY000): Host '192.168.4.254' is not allowed to connect to this MySQL server

#####################################################################################

修改数据库管理员本机登陆密码

50主机操作

#mysqladmin -hlocalhost -uroot -p password "654321"

用户名 新密码

页面显示如下是正确的。warn只是警告,并不是错误:

Enter password: 输入当前密码

mysqladmin: [Warning] Using a password on the command line interface can be insecure.

Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

中文翻译如下:

输入密码:

mysql管理员:[警告]在命令行接口上使用密码可能是不安全的。

警告:由于密码将以纯文本形式发送到服务器,因此使用ssl连接确保密码安全。

单词含义:command line(命令行),insecure(不安全),plain(完全),ensure(确保)

# mysql -uroot -p654321 验证使用新密码能登陆

######################################################################################

恢复MySQL管理员密码 (忘记MySQL管理员密码时):

单词含义:authentication(认证),string(字符串),privileges(特权)

# systemctl stop mysqld 工作中是不能停止数据库服务的,因为这样别人就访问不了,所以做出这个决定必须很谨慎!

# vim /etc/my.cnf

[mysqld]

skip_grant-tables 添加这一行!跳过授权表启动服务

secure_file_priv="/mydata"

default-storage-engine=myisam

#validate_password_policy=0 一定要注释掉这2行!

#validate_password_length=6 一定要注释掉这2行!

# systemctl start mysqld

# mysql 直接登陆数据库

mysql> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

... ...

| mysql | 授权库,可连接数据库的用户名和密码都放在这里

| performance_schema |

| studb |

| sys |

+--------------------+

mysql> desc mysql.user;

+------------------------+-----------------------------------+------+-----+-----------------------+-------+

| Field | Type | Null | Key | Default | Extra |

+------------------------+-----------------------------------+------+-----+-----------------------+-------+

| Host | char(60) | NO | PRI | | | 这是主机的字段

| User | char(32) | NO | PRI | | | 这是用户的字段

... ...

| authentication_string | text | YES | | NULL | | 这是密码字符串的字段

... ...

mysql> select user,host,authentication_string from mysql.user;

+-----------+-----------+-------------------------------------------+

| user | host | authentication_string |

+-----------+-----------+-------------------------------------------+

| root | localhost | *2A032F7C5BA932872F0F045E0CF6B53CF702F2C5 | 这就是root的密码加密后的字符串

| mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |

+-----------+-----------+-------------------------------------------+

mysql> select password(123456); 可看到123456这个数字加密后对应的字符串

+-------------------------------------------+

| password(123456) |

+-------------------------------------------+

| *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |

+-------------------------------------------+

mysql> update mysql.user

-> set authentication_string=password("123456")

-> where user="root" and host="localhost";

mysql> flush privileges; 刷新权限,privileges(特权)

mysql> quit

# systemctl stop mysqld

# vim /etc/my.cnf

[mysqld]

#skip_grant-tables 注释掉这一行,不要跳过授权表就启动服务

secure_file_priv="/mydata"

default-storage-engine=myisam

validate_password_policy=0 打开这2行的注释

validate_password_length=6 打开这2行的注释

# systemctl start mysqld

# mysql -uroot -p123456

###################################################################################

grant用户授权命令

格式:

grant 权限列表 on 库名.表名

to 用户名@客户端地址 这个用户和系统用户没有任何关系,他只是数据库的用户。工作中一般用IP来表示地址,因为域名和主机名最终也要转化为IP来解析。

indentified by '密码'

[with grant option]; 这个是可选项,一般都不写这个!指新授权的用户可以有授权的操作。

mysql> grant all on *.* to root@"%" identified by "123456" with grant option; %代表网络中的任何一台可以ping通的主机

mysql> grant all on db3.* to admin@"localhost" identified by "123465";

在客户端50本机测试50主机数据库服务器的授权

[root@mysql50 ~]# mysql -uadmin -p123465

mysql> select user(); 显示当前登陆的用户名和密码

+-----------------+

| user() |

+-----------------+

| admin@localhost |

+-----------------+

mysql> show grants; 显示当前登陆用户的访问权限

+--------------------------------------------------------+

| Grants for admin@localhost |

+--------------------------------------------------------+

| GRANT USAGE ON *.* TO 'admin'@'localhost' | 没有任何权限

| GRANT ALL PRIVILEGES ON `db3`.* TO 'admin'@'localhost' | 只对db3.*有权限

+--------------------------------------------------------+

mysql> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema | 这是一个虚拟的库,是个影子,并不存在。不占存储空间,任何用户登陆后都能看到它,但是看不了它的内容,也删不了。

| db3 |

+--------------------+

mysql> use db3;

mysql> show tables;

+---------------+

| Tables_in_db3 |

+---------------+

| t1 |

| t2 |

| t3 |

| t4 |

| user |

+---------------+

mysql> drop table t1; 可以删除db3库里的表t1

mysql> drop database db3; 可以删除db3库

mysql> show databases; 确认已经成功删除

+--------------------+

| Database |

+--------------------+

| information_schema |

+--------------------+

mysql> create database db3; 还能再创建db3库

Query OK, 1 row affected (0.00 sec)

mysql> create database db9; 创建不了db9库,因为admin这个用户只有对db3库的权限。

ERROR 1044 (42000): Access denied for user 'admin'@'localhost' to database 'db9'

###################################################################################

[root@room9pc01 ~]# which mysql 如果还没安装就yum -y install mariadb

/usr/bin/mysql

[root@mysql51 ~]# which mysql

/usr/bin/mysql

[root@mysql51 ~]# mysql -h192.168.4.50 -uroot -p123456

mysql> select user();

+--------------+

| user() |

+--------------+

| root@mysql51 | 当前是mysql51主机

+--------------+

mysql> show grants; 查看当前授权的权限

+-------------------------------------------------------------+

| Grants for root@% |

+-------------------------------------------------------------+

| GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION | 拥有所有权限,还有授权权限

+-------------------------------------------------------------+

mysql> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

| 学生库 |

| bbsdb |

| db1 |

| db2 |

| db3 |

| db4 |

| db44 |

| gamedb |

| mysql |

| performance_schema |

| studb |

| sys |

+--------------------+

mysql> drop database 学生库; 51主机上成功删除“学生库”

mysql> use db1; 进去别的库db1

mysql> show tables; 查看里面的表,说明拥有完全的权限

+---------------+

| Tables_in_db1 |

+---------------+

| t1 |

| t2 |

| t3 |

| t4 |

| t5 |

| t6 |

| t7 |

+---------------+

------------------------------------------------------------------------------------------------------

主机50上

[root@mysql50 ~]# mysql -uroot -p123456

mysql> select user();

+----------------+

| user() |

+----------------+

| root@localhost | 当前登陆的是数据库本地主机

+----------------+

mysql> show databases; 本地主机50上也看不到学生库了,因为之前51上登陆时删掉了。

+--------------------+

| Database |

+--------------------+

| information_schema |

| bbsdb |

| db1 |

| db2 |

| db3 |

| db4 |

| db44 |

| gamedb |

| mysql |

| performance_schema |

| studb |

| sys |

+--------------------+

-----------------------------------------------------------------------------------------------------------------------------

51主机上操作

mysql> grant select,insert,update(name,uid) 主机51上以数据库root身份来授权用户webadmin2

-> on db4.user2 to webadmin2@"192.168.4.%"

-> identified by "123456";

mysql> quit

[root@mysql51 ~]# mysql -h192.168.4.50 -uwebadmin2 -p123456 主机51上以数据库用户webadmin2身份登陆,说明授权成功!

mysql> select user();

+-------------------+

| user() |

+-------------------+

| webadmin2@mysql51 | 查看当前登陆用户

+-------------------+

mysql> show grants;

+----------------------------------------------------------------------------------------+

| Grants for webadmin2@192.168.4.% |

+----------------------------------------------------------------------------------------+

| GRANT USAGE ON *.* TO 'webadmin2'@'192.168.4.%' |

| GRANT SELECT, INSERT, UPDATE (uid, name) ON `db4`.`user2` TO 'webadmin2'@'192.168.4.%' | 拥有对uid和name的修改权限

+----------------------------------------------------------------------------------------+

mysql> delete from db4.user2; 没有删除表中所有内容的权限

ERROR 1142 (42000): DELETE command denied to user 'webadmin2'@'mysql51' for table 'user2'

mysql> drop table db4.user2; 没有删除表的权限

ERROR 1142 (42000): DROP command denied to user 'webadmin2'@'mysql51' for table 'user2'

mysql> select * from db4.user2; 有查询db4库中的表的权限

+----+---------------------+------+----------+-------+-------+---------+---------------------------+----------------+

| id | name | age | password | uid | gid | comment | homedir | shell |

+----+---------------------+------+----------+-------+-------+---------+---------------------------+----------------+

| 1 | root | 18 | x | 1 | -1 | root | /root | /bin/bash |

| 2 | bin | 18 | A | 2 | 0 | student | /bin | /sbin/nologin |

mysql> desc db4.user2;

+----------+-----------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+----------+-----------+------+-----+---------+-------+

| id | int(11) | NO | | 0 | |

| name | char(30) | YES | | NULL | |

| age | int(11) | YES | | 18 | |

| password | char(1) | YES | | NULL | |

| uid | int(11) | YES | | NULL | |

| gid | int(11) | YES | | NULL | |

| comment | char(150) | YES | | NULL | |

| homedir | char(150) | YES | | NULL | |

| shell | char(50) | YES | | NULL | |

+----------+-----------+------+-----+---------+-------+

mysql> update db4.user2

-> set uid=88 where name="root";

mysql> select uid,name from db4.user2 where name="root"; 确认更改成功!root的uid为88

+------+------+

| uid | name |

+------+------+

| 88 | root |

+------+------+

-------------------------------------------------------------------------------------------------------------------------------------

50主机上

mysql> select * from db4.user2 root的uid真的改为了88

-> where name="root";

+----+------+------+----------+------+------+---------+---------+-----------+

| id | name | age | password | uid | gid | comment | homedir | shell |

+----+------+------+----------+------+------+---------+---------+-----------+

| 1 | root | 18 | x | 88 | -1 | root | /root | /bin/bash |

+----+------+------+----------+------+------+---------+---------+-----------+

真机

[root@room9pc01 ~]# mysql -h192.168.4.50 -uwebadmin -p123456

ERROR 1045 (28000): Access denied for user 'webadmin'@'192.168.4.254' (using password: YES)

50主机

mysql> grant all on db4.user2 to webadmin@"192.168.4.254" identified by "123456";

Query OK, 0 rows affected, 1 warning (0.00 sec)

真机

[root@room9pc01 ~]# mysql -h192.168.4.50 -uwebadmin -p123456

MySQL [(none)]> select user();

+------------------------+

| user() |

+------------------------+

| webadmin@192.168.4.254 |

+------------------------+

1 row in set (0.00 sec)

MySQL [(none)]> show grants;

+---------------------------------------------------------------------+

| Grants for webadmin@192.168.4.254 |

+---------------------------------------------------------------------+

| GRANT USAGE ON *.* TO 'webadmin'@'192.168.4.254' |

| GRANT ALL PRIVILEGES ON `db4`.`user2` TO 'webadmin'@'192.168.4.254' |

+---------------------------------------------------------------------+

MySQL [(none)]> quit

################################################################################

撤销权限

50主机

mysql> select host,user from mysql.user; 查有哪些授权用户和客户端地址

+---------------+-----------+

| host | user |

+---------------+-----------+

| % | root |

| 192.168.4.% | webadmin2 |

| 192.168.4.254 | webadmin |

| localhost | admin |

| localhost | mysql.sys |

| localhost | root |

+---------------+-----------+

mysql> show grants for webadmin2@"192.168.4.%"; 然后就可以查对应客户端地址的用户的权限

+----------------------------------------------------------------------------------------+

| Grants for webadmin2@192.168.4.% |

+----------------------------------------------------------------------------------------+

| GRANT USAGE ON *.* TO 'webadmin2'@'192.168.4.%' |

| GRANT SELECT, INSERT, UPDATE (uid, name) ON `db4`.`user2` TO 'webadmin2'@'192.168.4.%' |

+----------------------------------------------------------------------------------------+

mysql> revoke insert,update(uid,name) on db4.user2 from webadmin2@"192.168.4.%"; revoke(撤销),从哪一个用户撤销用from

mysql> show grants for webadmin2@"192.168.4.% ";

+------------------------------------------------------------+

| Grants for webadmin2@192.168.4.% |

+------------------------------------------------------------+

| GRANT USAGE ON *.* TO 'webadmin2'@'192.168.4.%' |

| GRANT SELECT ON `db4`.`user2` TO 'webadmin2'@'192.168.4.%' |

+------------------------------------------------------------+

####################################################################

撤销授权用户的授权权限

mysql> select host,user from mysql.user;

+---------------+-----------+

| host | user |

+---------------+-----------+

| % | root |

| 192.168.4.% | webadmin2 |

| 192.168.4.254 | webadmin |

| localhost | admin |

| localhost | mysql.sys |

| localhost | root |

+---------------+-----------+

mysql> show grants for root@"%";

+-------------------------------------------------------------+

| Grants for root@% |

+-------------------------------------------------------------+

| GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION |

+-------------------------------------------------------------+

mysql> revoke grant option on *.* from root@"%"; 撤销授权用户的授权权限

mysql> show grants for root@"%"; 授权用户已经没有授权权限了

+-------------------------------------------+

| Grants for root@% |

+-------------------------------------------+

| GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' |

+-------------------------------------------+

mysql> revoke all on *.* from root@"%"; 撤销all所有权限

mysql> show grants for root@"%";

+----------------------------------+

| Grants for root@% |

+----------------------------------+

| GRANT USAGE ON *.* TO 'root'@'%' | GRANT USAGE ON *.* TO 是没有权限的意思

+----------------------------------+

###############################################################################

真机

[root@room9pc01 ~]# mysql -h192.168.4.50 -uroot -p123456

MySQL [(none)]> select user();

+--------------------+

| user() |

+--------------------+

| root@192.168.4.254 |

+--------------------+

MySQL [(none)]> show grants;

+----------------------------------+

| Grants for root@% |

+----------------------------------+

| GRANT USAGE ON *.* TO 'root'@'%' | 虽然没有权限了,但是还是能登陆数据库

+----------------------------------+

MySQL [(none)]> quit

--------------------------------------------------------------------------------------------------------------

50主机

mysql> drop user root@"%"; 删除这个授权用户。撤销一个用户的所有权限,让他连都不能连。

--------------------------------------------------------------------------------------------------------------

[root@room9pc01 ~]# mysql -h192.168.4.50 -uroot -p123456

ERROR 1045 (28000): Access denied for user 'root'@'192.168.4.254' (using password: YES)

------------------------------------------------------------------------------------------

50上

# firefox 192.168.4.50/phpmyadmin

用户admin 密码123465

可以登陆访问

50上

mysql> drop user admin@"localhost";

# firefox 192.168.4.50/phpmyadmin 访问不了了

mysql> grant select on *.* to u1 identified by "123456";

真机

# mysql -h192.168.4.50 -uu1 -p123456

MySQL [(none)]> set password = password("654321"); 用户u1在其他客户端上进入mysql,能自己更改自己的密码

如果u1忘记密码了

50上

mysql> set password for u1@"%"=password("123456"); 成功修改u1的密码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值