MySQL常用命令
一、服务管理
启动:
service mysqld start
停止:
service mysqld stop
重启:
service mysqld restart
查看状态:
service mysqld status
说明:
# 用RPM安装的以一般服务的形式使用 service mysqld start # 其实上面对应的启动文件放在/etc/init.d/mysqld下,所以还可以这样使用 /etc/init.d/mysqld start # 如果使用二进制包(tar.gz)安装的,那么服务的设置文件放在/usr/local/mysql/support-files/mysql.server,然后拷贝到/etc/init.d文件夹后,这样使用 /etc/init.d/mysql.server start # 如果是5.5版本以下的,以RPM包安装的,那么服务名为mysql,少了一个d
# 这里以start进行说明,以此类推其它参数,且以上方式在Ubuntu和CentOS都同样适用
# 针对新版的Linux,有systemctl服务管理工具,其实这个是兼容service的,也可以使用这个工具进行服务的管理
# 如果使用systemctl进行服务器管理的,一般服务会有mysql.service这样的后缀,其实.service可以不用要,但视具体情况而定。
针对Mac系统:
# 以安装包安装的,那么可以通过launchctl服务管理工具: sudo launchctl start com.oracle.oss.mysql.mysqld # 可以看出上面的服务名其实很长,不好看且不好找,推荐使用二进制包的形式: /usr/local/mysql/support-files/mysql.server start
针对启动方式的多种模式:
# mysqld,传统进程模式 # 启动mysql服务器: ./mysqld --defaults-file=/etc/my.cnf --user=root # 客户端连接: mysql --defaults-file=/etc/my.cnf or mysql -S /tmp/mysql.sock # mysqld_safe,官方推荐安装模式,有日志输出 # 启动mysql服务器: ./mysqld_safe --defaults-file=/etc/my.cnf --user=root # mysql.server,以服务的模式 cp -v /usr/local/mysql/support-files/mysql.server /etc/init.d/ chkconfig --add mysql.server chkconfig mysql.server on # 启动mysql服务器: service mysql.server {start|stop|restart|reload|force-reload|status} # mysqld_multi,多个服务端启动管理工具 # 启动mysql服务器: ./mysqld_multi --defaults-file=/etc/my.cnf start 3306-3307 # 关闭mysql服务器: ./mysqladmin shutdown
二、重置root密码
使用的是mysql_secure_installation工具:
Enter current password for root (enter for none): # 解释:输入当前 root 用户密码,默认为空,直接回车。 Set root password? [Y/n] y # 解释:要设置 root 密码吗?输入 y 表示愿意。 Remove anonymous users? [Y/n] y # 解释:要移除掉匿名用户吗?输入 y 表示愿意。 Disallow root login remotely? [Y/n] y # 解释:不想让 root 远程登陆吗?输入 y 表示愿意。 Remove test database and access to it? [Y/n] y # 解释:要去掉 test 数据库吗?输入 y 表示愿意。 Reload privilege tables now? [Y/n] y # 解释:想要重新加载权限吗?输入 y 表示愿意。
一般情况初次安装的数据库是没有密码,登录用户名为root,但是如果二进制包安装的,其实在命令行上已经有给出一长串比较复杂的密码,如果此时关掉了,那么只能通过这个文件进行查找:
grep 'temporary password' /var/log/mysqld.log
如果提示没有这个文件,可以通过ps或者my.cnf文件看日志文件放在哪里,或者和data文件夹一起。
忘记密码的修改密码操作:
# 修改配置参数 vi /etc/my.cnf # 在 [mysqld] 下面加上: skip-grant-tables # 重启mysql service mysqld restart # 注意事项 # 此时所有用户登录当前数据库都是免密码的,所以此时数据库的安全性是非常低的。 # 修改密码 mysqladmin -u用户名 -p旧密码 password 新密码 # 去掉参数 # 密码修改好了之后再将配置文件中 skip-grant-tables去掉 # 再次重启数据库。
三、用户管理,增加远程访问
grant on命令用于增加新用户并控制其权限。
grant on命令格式:
MySQL> grant select on 数据库.* to 用户名@登录主机 identified by “密码”;
增加一个用户test1,密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用root用户连入MYSQL,然后键入以下命令:
MySQL> grant select,insert,update,delete on *.* to test1@"" Identified by "abc";
但增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了,解决办法如下。
增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库,只能通过MYSQL主机上的web页来访问了。
MySQL> grant select,insert,update,delete on mydb.* to test2@localhost identified by "abc";
如果你不想test2有密码,可以再打一个命令将密码消掉。
MySQL> grant select,insert,update,delete on mydb.* to test2@localhost identified by "";
如果想要全部权限,可以将select,insert,update,delete改成all
完整了上述操作之后,使其生效:
MySQL> flush privileges;
当报下面错误,提示密码不满足当前的策略要求。错误如下:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements # 或者 mysqladmin: unable to change password; error: 'Your password does not satisfy the current policy requirements'
解决方法:可以按照现有策略设置密码,也可以更改密码策略。
# 更改密码策略为LOW MySQL> set global validate_password_policy=0; # 更改密码长度 密码最小长度为4 MySQL> set global validate_password_length=4;
进入 MySQL 查看你的密码验证策略
mysql> SHOW VARIABLES LIKE 'validate_password%'; +--------------------------------------+-------+ | Variable_name | Value | +--------------------------------------+-------+ | validate_password_check_user_name | OFF | | validate_password_dictionary_file | | | validate_password_length | 4 | | validate_password_mixed_case_count | 1 | | validate_password_number_count | 1 | | validate_password_policy | LOW | | validate_password_special_char_count | 1 | +--------------------------------------+-------+ 7 rows in set (0.00 sec)
- validate_password_check_user_name 不得使用当前会话用户名作为密码的一部分
- validate_password_dictionary_file 验证密码强度的字典文件路径
- validate_password_length 密码最小长度
- validate_password_mixed_case_count 密码至少要包含的小写字母个数和大写字母个数
- validate_password_number_count 密码至少要包含的数字个数
- validate_password_policy 密码强度检查等级,0/LOW、1/MEDIUM、2/STRONG
- 0/LOW:只检查长度。
- 1/MEDIUM:检查长度、数字、大小写、特殊字符。
- 2/STRONG:检查长度、数字、大小写、特殊字符字典文件。
- validate_password_special_char_count 密码至少要包含的特殊字符数
四、连接数据库
mysql -h 主机地址 -u 用户名 -p用户密码 -P 端口
备注:经过测试只有-p是要连在一起的,其余可以不用。