使用mysql命令登录数据库

mysql -h localhost -uroot -p
  • -h 主机名

  • -u 用户名

  • -p 密码 ,密码和-p之间不能有空格

  • -P(大写) 端口号,不指定时默认为3306

  • -e 执行的SQL语句

新建普通用户

两种方式,一是使用create user或grant语句,另一种是直接操作mysql授权表
CREATE USER user_speification [,user_specification]...
    user_specification:    user@host
    [        IDENTIFIED BY [PASSWORD] 'password'
        |IDENTIFIED WITH auth_plugin [AS 'auth_string']
    ]

例:

CREATE USER ‘jeffrey’@'localhost' IDENTIFIED BY 'mypass'

为了避免指定明文密码,如果知道密码的散列值 ,可以通过PASSWORD关键字使用密码的哈希设置密码 密码的哈希值可以使用password() 函数获取: 如:

select password('mypass');

使用GRANT语句创建新用户,同时也可以赋权限

GRANT privileges ON db.table
    TO user@host [IDENTIFIED BY ‘password’][,user[INDENTIFIED BY 'password']]
    [WITH GRANT OPTION]

例:

MySQL>GRANT SELECT,UPDATE ON *.* TO 'testUser@localhost'
     >IDENTIFIED BY 'testpwd'

执行成功后,验证testUser的权限

MySQL>SELECT Host,User,Select_priv,Update_priv FROM mysql.user where user='testUser'

User表中的user和host字段区分大小写,在查询的时候要指定正确的用户名 或主机名

删除普通用户

使用DROP USER删除用户

DROP USER user[,user]

例:

DROP USER ‘user@localhost’

root用户修改自已的密码

mysqladmin -u username -h localhost -p password "newpwd"

使用SET语句修改root用户的密码(普通用户也可以修改自已的密码)

SET PASSWORD=PASSWORD("rootpwd")

root用户修改普通用户密码

SET PASSWORD FOR 'user'@'host'=PASSWORD('somepassword')

root用户密码丢失解决办法

使用 --skip-grant-tables选项启动MySQL服务

windows操作系统中,使用mysqld或mysqld-nt来启动MySQL服务进程

mysqld命令如下:

mysqld --skip-grant-tables

myslqd-nt命令如下:

mysqld-nt  --skip-grant-tables

Linux操作系统中,使用mysqld_safe来启动MySQL服务, 也可以使用/etc/init.d/mysql命令来启动MySQL服务。

mysqld_safe 命令如下

mysqld_safe --skip-grant-tables user=mysql

/etc/init.d/mysql命令如下

/etc/init.d/mysql start-mysqld --skip-grant-tables

启动MySQL服务后,就可以使用root用户登录了。

修改密码后,要刷新权限 ,新密码才会生效

mysql>FLUSH PRIVILEGES;

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


本人正在学英语,欢迎关注我的公众号:美剧磨耳朵

和我一起学英语,用美剧磨耳朵。