zoukankan      html  css  js  c++  java
  • 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是要连在一起的,其余可以不用。

  • 相关阅读:
    MYSQL把一张表的数据批量复制到另外一张表
    06:rpm 和 yum 执行卡住,解决方法
    su: cannot set user id: Resource temporarily unavailable 解决方法
    queue队列
    threading 两种调用方法
    paramiko 模块 linux
    socketserver 模块实现ftp功能
    socket实现简单的文件下载传输功能
    mysql使用update代替delete做伪删除
    mysql客户端命令mysqladmin介绍
  • 原文地址:https://www.cnblogs.com/EasonJim/p/9047715.html
Copyright © 2011-2022 走看看