Linux创建用户、删除用户、修改密码完整命令

前言

服务器上为不同人员或程序分配账号,是Linux基础运维的常见操作。创建账号要顺便建好家目录、设好初始密码;删除账号要决定是否清掉家目录和邮件;改密码分root改别人密码和用户改自己密码两种场景。本篇把常用命令一次讲全。

一、创建用户

# 新建用户,同时创建家目录 /home/www
useradd -m www
# 指定UID、家目录、登录Shell、所属组
useradd -u 1001 -d /home/www -s /bin/bash -G wheel www
# 设置初始密码(交互式两次输入)
passwd www

参数说明:

  • -m:自动创建 /home/用户名 家目录;
  • -s:指定登录Shell,不想登录给 /sbin/nologin;
  • -G:附加到指定组;
  • -M:不创建家目录(服务账号常用)。

一键创建并设密码(脚本场景,免交互):

useradd -m deploy
echo 'Deploy@123456' | passwd --stdin deploy

二、查看用户信息

# 查看用户UID、GID、所属组
id www
# 查看 /etc/passwd 里该用户记录
grep www /etc/passwd
# 查看组信息
groups www

三、修改密码

# root修改任意用户密码(交互式)
passwd www
# 用户自己改自己的密码
passwd
# 强制该用户下次登录改密码
passwd -e www
# 锁定账号(禁止登录)
usermod -L www
# 解锁
usermod -U www

四、修改用户属性

# 改用户名
usermod -l newname oldname
# 改登录Shell
usermod -s /sbin/nologin www
# 加入sudo组(CentOS为wheel)
usermod -aG wheel www

五、删除用户

# 只删账号,保留家目录和邮件
userdel www
# 连家目录、邮件一起删除(推荐,避免残留占空间)
userdel -r www
# 若提示用户进程仍在运行,先终止相关进程
pkill -u www

删除前确认该用户名下没有正在跑的重要服务,否则会误停业务。

六、常见坑

  1. 服务账号没设 /sbin/nologin:容易被登录爆破,数据库、nginx这类程序账号应禁止Shell登录;
  2. userdel 没加 -r:家目录残留,多次建删会堆很多无用目录;
  3. 改了用户名没改家目录属主:chown -R www:www /home/www 补一下;
  4. 密码太简单被拒绝:passwd 报错 BAD PASSWORD,可强制用 echo ... | passwd --stdin 绕过复杂度检查(生产环境仍应设强密码);
  5. 服务账号误删:先 id 和 ps -u www 确认归属再删。

总结

useradd -m 用户名 建号、passwd 用户名 设密码;root用 passwd 用户名 改任意账号密码,用户用 passwd 改自己的;userdel -r 用户名 连家目录一起删,删前先确认该账号名下没有运行中的服务。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-22 07:21 

Linux创建用户、删除用户、修改密码完整命令

前言

服务器上要加新用户、删旧用户、改密码,这些都是日常操作。本文把常用的用户管理命令都整理出来,新手也能照着做。

创建用户

useradd 命令

最简单的创建用户:

useradd 用户名

比如创建一个叫 zhangsan 的用户:

useradd zhangsan

创建完之后,这个用户还不能登录,因为没设密码。

创建用户并设密码

一行搞定:

useradd zhangsan && passwd zhangsan

执行 passwd zhangsan 之后会提示输入两次密码。

创建用户并指定家目录

默认家目录是 /home/用户名,想改的话用 -d:

useradd -d /data/zhangsan zhangsan

创建用户并指定用户组

useradd -g 用户组 用户名

比如把 zhangsan 加到 www 组:

useradd -g www zhangsan

创建用户并指定 UID

useradd -u 1001 zhangsan

修改密码

passwd 命令

修改某个用户的密码:

passwd 用户名

比如修改 zhangsan 的密码:

passwd zhangsan

执行后会提示输入两次新密码。

自己改密码

passwd

直接执行,会提示输入旧密码,然后输入新密码两次。

免交互改密码(脚本用)

写脚本的时候不能交互式输入,用这个:

echo "新密码" | passwd --stdin 用户名

比如:

echo "123456" | passwd --stdin zhangsan

删除用户

userdel 命令

只删用户,不删家目录:

userdel 用户名

比如:

userdel zhangsan

删除用户并删家目录

加 -r 参数,把家目录也删掉:

userdel -r zhangsan

警告: -r 会把 /home/zhangsan 整个删掉,里面的文件都没了,确认清楚再执行。

查看用户信息

查看用户 UID、GID、组

id 用户名

比如:

id zhangsan

输出类似:

uid=1001(zhangsan) gid=1001(zhangsan) 组=1001(zhangsan)

查看用户信息

grep 用户名 /etc/passwd

查看所有用户

cat /etc/passwd

每行一个用户,格式是:

用户名:x:UID:GID:注释:家目录:登录Shell

常见坑

坑1:创建用户后不能登录

创建了用户但 SSH 登录不了。

原因: 没设密码,或者 Shell 是 /sbin/nologin。

解决:

  1. 先设密码:passwd 用户名
  2. 检查 Shell:grep 用户名 /etc/passwd,最后一列应该是 /bin/bash

如果是 /sbin/nologin,改回来:

usermod -s /bin/bash 用户名

坑2:删了用户但家目录还在

执行了 userdel zhangsan,但 /home/zhangsan 还在。

原因: 没加 -r 参数。

解决: 手动删:

rm -rf /home/zhangsan

坑3:普通用户没权限 sudo

新用户不能用 sudo。

原因: 没加到 sudoers 里。

解决: 加到 wheel 组(CentOS)或者 sudo 组(Ubuntu):

usermod -aG wheel 用户名

坑4:密码过期了

用户突然不能登录了,提示密码过期。

解决: root 改密码:

passwd 用户名

或者设置密码永不过期:

chage -M 99999 用户名

总结

操作 命令
创建用户 useradd 用户名
设密码 passwd 用户名
删除用户 userdel 用户名
删除用户+家目录 userdel -r 用户名
查看用户信息 id 用户名
加 sudo 权限 usermod -aG wheel 用户名

日常运维就这几个命令,够用了。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-6 07:44 

MySQL用户创建和权限管理完整教程

前言

做网站开发或者运维的同学,肯定会遇到这种情况:需要给开发或者运营同学一个数据库账号,但是又不能给root权限,怕他们误操作删库。这时候就需要用到MySQL的用户和权限管理功能了。

很多新手同学只会用root账号登录数据库,不知道怎么创建新用户、怎么分配权限。这篇文章就把MySQL用户创建和权限管理的完整教程整理出来,从创建用户、授权、改密码到删除用户,一步一步讲清楚。

一、创建用户

首先我们来创建一个新用户。MySQL创建用户有两种方式:CREATE USER 和 GRANT。

方式1:用CREATE USER创建用户

CREATE USER 'testuser'@'localhost' IDENTIFIED BY '123456';

这个命令创建了一个叫testuser的用户,密码是123456,只能从本机(localhost)连接MySQL。

如果你想让用户可以从任何地方连接,可以把localhost改成%:

CREATE USER 'testuser'@'%' IDENTIFIED BY '123456';

注意:生产环境不建议用%,最好指定具体的IP地址,更安全。

方式2:用GRANT创建用户并直接授权

其实更常用的是创建用户的同时直接授权,一步到位:

GRANT ALL PRIVILEGES ON testdb.* TO 'testuser'@'localhost' IDENTIFIED BY '123456';

这个命令会自动创建testuser用户,并且把testdb数据库的所有权限都给它。

二、给用户授权

创建完用户之后,我们来给用户分配权限。MySQL的权限粒度很细,可以精确到某张表、某个字段。

常用权限说明

  • ALL PRIVILEGES:所有权限
  • SELECT:查询权限
  • INSERT:插入权限
  • UPDATE:更新权限
  • DELETE:删除权限
  • CREATE:创建表/数据库权限
  • DROP:删除表/数据库权限
  • ALTER:修改表结构权限
  • INDEX:创建索引权限
  • CREATE VIEW:创建视图权限
  • PROCESS:查看进程权限
  • RELOAD:执行flush权限
  • SHOW DATABASES:查看所有数据库权限

给用户所有权限

GRANT ALL PRIVILEGES ON testdb.* TO 'testuser'@'localhost';

这个命令的意思是:把testdb数据库里所有表的所有权限都给testuser用户。

只给用户查询和修改权限

GRANT SELECT, INSERT, UPDATE, DELETE ON testdb.* TO 'testuser'@'localhost';

这样用户就只能查询、插入、修改、删除数据,不能修改表结构,也不能删表。

只给用户某张表的权限

GRANT SELECT ON testdb.users TO 'testuser'@'localhost';

这样用户只能查询testdb库里的users表,其他表都访问不了。

给用户所有数据库的权限

GRANT ALL PRIVILEGES ON *.* TO 'testuser'@'localhost';

.的意思是所有数据库的所有表。这个权限基本相当于root了,要谨慎使用。

授权之后一定要刷新权限

每次给用户授权之后,一定要执行下面这个命令刷新权限,不然授权可能不生效:

FLUSH PRIVILEGES;

三、查看用户权限

想知道某个用户有什么权限,可以用下面这个命令:

SHOW GRANTS FOR 'testuser'@'localhost';

执行完之后会显示这个用户的所有权限。

查看所有用户

如果想看看MySQL里有哪些用户,可以查询mysql.user表:

SELECT user, host FROM mysql.user;

四、修改用户密码

如果要修改某个用户的密码,可以用下面的命令:

ALTER USER 'testuser'@'localhost' IDENTIFIED BY '新密码';

修改完之后也要刷新权限:

FLUSH PRIVILEGES;

五、回收用户权限

如果用户权限给多了,想收回某些权限,可以用REVOKE命令:

收回所有权限

REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'testuser'@'localhost';

收回某个具体权限

REVOKE DELETE ON testdb.* FROM 'testuser'@'localhost';

这样用户就没有删除数据的权限了。

回收完权限之后也要刷新:

FLUSH PRIVILEGES;

六、删除用户

如果某个用户不需要了,可以删除:

DROP USER 'testuser'@'localhost';

注意:删除用户的时候,用户已有的权限也会一起被删掉。

七、创建用户的安全建议

  1. 不要随便给用户ALL PRIVILEGES:按需授权,只给需要的权限就行
  2. 不要用%允许所有IP连接:生产环境最好指定具体的IP
  3. 不要用root账号给应用用:单独创建一个应用账号,只给需要的权限
  4. 密码要复杂一点:不要用123456这种简单密码
  5. 定期清理不用的用户:不用的用户及时删掉,减少安全隐患

常见坑

坑1:授权之后忘了FLUSH PRIVILEGES

很多同学授权完之后直接就用了,结果发现权限没生效。这就是因为忘了执行FLUSH PRIVILEGES。每次授权或者改密码之后,一定要执行一下这个命令刷新权限。

坑2:用户创建了但是连不上

很多同学创建完用户之后,用这个用户去连接数据库,结果连接失败。这一般是因为:

  1. 你创建用户的时候指定的是localhost,但是你从其他IP连接
  2. 防火墙没放行MySQL端口
  3. 用户密码输错了

坑3:%和localhost搞混了

很多同学不知道'localhost'@'%'和'%'@'localhost'的区别。记住:用户名是前面的,后面的是允许连接的IP。

坑4:给了权限但是还是操作不了

有时候给了用户权限,但是用户还是操作不了。这一般是因为:

  1. 忘了FLUSH PRIVILEGES
  2. 表或者字段的权限没给
  3. 用户根本就没有这个数据库的权限

总结

MySQL用户创建和权限管理的核心内容:

  1. 创建用户:CREATE USER 或者 GRANT 直接创建并授权
  2. 给用户授权:GRANT 权限 ON 数据库.表 TO 用户@IP
  3. 查看权限:SHOW GRANTS FOR 用户
  4. 改密码:ALTER USER 用户 IDENTIFIED BY 新密码
  5. 回收权限:REVOKE 权限 ON 数据库.表 FROM 用户
  6. 删除用户:DROP USER 用户
  7. 所有操作完之后都要 FLUSH PRIVILEGES 刷新权限

记住这些命令,以后给应用或者同事分配数据库账号的时候就不用慌了。安全第一,不要随便给用户root权限。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-5 08:45 

Linux用户和组管理,useradd和groupadd命令使用

前言

服务器上需要给开发人员开个账号?或者给不同的人分配不同的权限?这就需要用到 Linux 的用户和组管理。Linux 是多用户系统,每个用户有自己的家目录和权限。学会用户和组管理,是运维的基本功。本文就讲一下怎么创建、删除、修改用户和组。

创建用户

基本创建

useradd testuser

这样就创建了一个叫 testuser 的用户。默认会:

  • 创建一个同名的组
  • 创建家目录 /home/testuser
  • 指定 shell 为 /bin/bash

设置密码

passwd testuser

输入两次密码就好了。注意: 新建的用户默认是不能登录的,必须设密码才能登录。

创建用户时指定参数

useradd -m -s /bin/bash -G wheel testuser

参数说明:

  • -m:自动创建家目录
  • -s /bin/bash:指定默认 shell
  • -G wheel:把用户加入 wheel 组(可以用 sudo)

查看用户信息

id testuser

输出用户的 UID、GID、所属组。

cat /etc/passwd

查看所有用户。

删除用户

userdel testuser

这样只删用户,不删家目录。

如果要连家目录一起删:

userdel -r testuser

注意: -r 会把用户的家目录和邮件都删掉,小心操作。

修改用户

修改用户名

usermod -n newname oldname

修改用户的家目录

usermod -d /home/newhome testuser

把用户加入某个组

usermod -aG wheel testuser

-aG 表示追加到组,不要只用 -G,不然会把原来的组都覆盖掉。

锁定用户

usermod -L testuser

锁定后用户不能登录。

解锁用户

usermod -U testuser

组管理

创建组

groupadd developers

删除组

groupdel developers

查看用户属于哪些组

groups testuser

把用户加入组

usermod -aG developers testuser

从组里删除用户

gpasswd -d testuser developers

sudo 权限

把用户加入 wheel 组(CentOS 默认支持 sudo 的组)

usermod -aG wheel testuser

这样 testuser 就可以用 sudo 执行 root 命令了。

编辑 sudoers 文件

visudo

在文件里添加:

testuser ALL=(ALL)       ALL

这样 testuser 也有 sudo 权限。

注意: 一定要用 visudo 编辑,不要直接改 /etc/sudoers,改坏了 sudo 就用不了了。

查看登录历史

谁在线

w

历史登录记录

last

谁在执行 sudo

lastcomm

实际应用场景

场景1:给开发人员开账号

useradd -m -s /bin/bash dev01
passwd dev01
usermod -aG developers dev01

场景2:给运维开 sudo 权限

useradd -m -s /bin/bash ops01
passwd ops01
usermod -aG wheel ops01

场景3:删除离职员工账号

userdel -r olduser

常见坑

坑1:userdel 没加 -r,家目录还在

只删了用户,家目录 /home/testuser 还在,占着磁盘空间。

解决: 删用户的时候加 -r:

userdel -r testuser

坑2:usermod -G 把原来的组覆盖了

用 -G 而不是 -aG,结果用户原来的组都没了,只剩新的组。

解决: 追加组用 -aG:

usermod -aG developers testuser

坑3:新建用户不能登录

创建了用户,但没设密码,结果不能登录。

解决: 创建完用户一定要设密码:

passwd testuser

坑4:visudo 改错了

直接用 vi 改 /etc/sudoers,改错了导致 sudo 用不了。

解决: 一定要用 visudo 命令编辑,它会检查语法。

总结

用户和组管理的核心命令:

  1. useradd:创建用户
  2. passwd:设置密码
  3. userdel -r:删除用户(连家目录)
  4. usermod -aG:把用户加入组
  5. groupadd:创建组
  6. groups:查看用户属于哪些组
  7. visudo:编辑 sudo 权限

用户管理是 Linux 安全的基础,每个用户用自己的账号,不要所有人都用 root。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-5 07:47 
'); })();