使用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;
------------------------------------------------------
本人正在学英语,欢迎关注我的公众号:美剧磨耳朵
和我一起学英语,用美剧磨耳朵。