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是要连在一起的,其余可以不用。

原文地址:https://www.cnblogs.com/EasonJim/p/9047715.html