zoukankan      html  css  js  c++  java
  • MySQL基本管理

    Mysql是一个典型的C/S服务结构,它自带客户端,例如:mysql、mysqladmin和mysqldump等

    MySQL设置密码

    #初始状态下,管理员root的密码为空或者是随机生成的,而且只允许本机登录。一般情况下,我们安装好Mysql之后的第一件事就是修改默认的密码。
    
    #  设置初始密码 由于原密码为空,因此-p可以不用
    [root@db03 ~]# mysqladmin -uroot password "old.321"   
    #这种设置密码暴露在命令行,不安全。推荐下一种
    
    [root@db03 ~]# mysqladmin -uroot password
    New password: 
    Confirm new password: 
     
    # 修改mysql密码,因为已经有密码了,所以必须输入原密码才能设置新密码
    [root@db03 ~]# mysqladmin -uroot -p"123" password "zhang.321"  
    #同理,推荐下一种
    [root@db03 ~]# mysqladmin -uroot -p password
    Enter password: 
    New password: 
    Confirm new password: 
    
    

    MySQL修改密码

    无论是初始化之后第一次修改密码,还是日常维护中的修改root密码,修改root密码都是非常有必要的。再企业实际生产环境中,要求隔一段时间都会修改密码。那么具体修改密码的方式有哪些,下面我们来演示一下。

    1.使用mysqladmin客户端修改

    -- 语法格式:
    	mysqladmin -u username -h hostname -p password "newpwd"
    
    -- 语法参数说明如下:
    ● usermame 指需要修改密码的用户名称,在这里指定为 root 用户;
    ● hostname 指需要修改密码的用户主机名,该参数可以不写,默认是 localhost;
    ● password 为关键字,而不是指旧密码;
    ● newpwd 为新设置的密码,必须用双引号括起来。如果使用单引号会引发错误,可能会造成修改后的密码不是你想要的。
    
    -- 示例:
    [root@db03 ~]# mysqladmin -uroot -p password
    Enter password: 
    New password: 
    Confirm new password: 
    
    

    2.使用SET语句修改普通用户的密码

    -- 在 MySQL 中,只有 root 用户可以通过更新 MySQL 数据库来更改密码。使用 root 用户登录到 MySQL 服务器后,可以使用 SET 语句来修改普通用户密码。
    
    mysql> set password for zzc@'172.16.1.52' = password("zzc@123");
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    
    [root@db02 ~]# mysql -uzzc -pzzc@123 -h172.16.1.51
    mysql: [Warning] Using a password on the command line interface can be 
    ----------- -------- ----------- ---------------
    mysql> 
    
    

    3.使用UPDATE语句修改普通用户的密码

    -- 使用 root 用户登录 MySQL 服务器后,可以使用 UPDATE 语句修改 MySQL 数据库的 user 表的 authentication_string 字段,从而修改普通用户的密码。
    mysql> update mysql.user set authentication_string = password('old') where user='zzc' and host='172.16.1.52';
    Query OK, 1 row affected, 1 warning (0.00 sec)
    Rows matched: 1  Changed: 1  Warnings: 1
    
    #提示报错
    [root@db02 ~]# mysql -uzzc -pold -h172.16.1.51
    mysql: [Warning] Using a password on the command line interface can be insecure.
    ERROR 1045 (28000): Access denied for user 'zzc'@'172.16.1.52' (using password: YES)
    
    mysql> -- 刷新权限
    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)
    
    #再次登录,成功
    [root@db02 ~]# mysql -uzzc -pold -h172.16.1.51
    mysql: [Warning] Using a password on the command line interface can be insecure.
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    
    mysql> \q
    
    

    4.使用 GRANT 语句修改普通用户密码

    -- 还可以在全局级别使用 GRANT USAGE 语句指定某个账户的密码而不影响账户当前的权限。需要注意的是,使用 GRANT 语句修改密码,必须拥有 GRANT 权限。一般情况下最好使用该方法来指定或修改密码。
    mysql> GRANT USAGE ON *.* TO 'test7'@'localhost' IDENTIFIED BY 'test0007';
    Query OK, 0 rows affected, 2 warnings (0.00 sec)
    
    

    5.使用ALTER语句修改

    mysql> alter user root@localhost identified by 'boy@321';
    Query OK, 0 rows affected (0.00 sec)
    
    [root@db02 ~]# mysql -uzzc -pboy@321 -h172.16.1.51
    mysql: [Warning] Using a password on the command line interface can be insecure.
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    ------------ ---------- ------------------ -----------------
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql> 
    
    

    6.忘记root密码情况下修改

    #首先停止mysql
    [root@db03 ~]# systemctl stop mysqld
    # --skip-grant-tables 跳过授权表         --skip-networking 禁止远程连接
    [root@db03 ~]# mysqld_safe --skip-grant-tables --skip-networking &
    #直接连接登录
    [root@db03 ~]# mysql
    mysql> update mysql.user set authentication_string=password('123qwe') where user='root' and Host = 'localhost';
    #特别提醒注意的一点是,新版的mysql数据库下的user表中已经没有Password字段了,而是将加密后的用户密码存储于authentication_string字段
    
    #刷新授权表,必须进行的一步
    mysql> flush privileges; 
    Query OK, 0 rows affected (0.00 sec)
    #正常启动,进行登录
    [root@db03 ~]# systemctl start mysqld
    [root@db03 ~]# mysql -uroot -p123qwe
    
    ---------------- ------------------- ------------- ---------------- ------------------- -------------
    
    #或者在/etc/my.cnf文件中添加 skip-grant-tables 参数
    [root@db03 ~]# vim /etc/my.cnf
    [mysqld]
    skip-grant-tables 
    #重启mysql并登录
    [root@db01 ~]# systemctl restart mysqld
    [root@db03 ~]# mysql
    mysql> 
    mysql> update mysql.user set authentication_string=password('123qwe') where user='root' and Host = 'localhost';
    Query OK, 1 row affected, 1 warning (0.00 sec)
    Rows matched: 1  Changed: 1  Warnings: 1
    
    mysql> flush privileges;
    Query OK, 0 rows affected (0.01 sec)
    
    #删除skip_grant_tables
    [root@db03 ~]# vim /etc/my.cnf 
    [root@db03 ~]# systemctl restart mysqld
    [root@db03 ~]# mysql -uroot -p123qwe
    mysql: [Warning] Using a password on the command line interface can be insecure.
    mysql>
    

    MySQL连接方式

    1. TCP/IP的连接方式
    2. 套接字连接方式,socket连接
    3. 默认使用socket方式连接
     
    #查看连接方式
    mysql> status;
    --------------
    Connection:     Localhost via UNIX socket
     
    3.举例:
        3.1.TCP/IP连接,通常带有-h选项的都是TCP/IP链接
          mysql -uroot -p -h127.0.0.1 -P 端口号
          mysql -uroot -p -h127.0.0.1 -S /tmp/mysql.sock
     
        3.2.socket连接
        	mysql -uroot -p123(默认连接方式,socket)
     
    4.注意:
        4.1.因为使用TCP/IP连接,需要建立三次握手
        4.2.不一定-h都是tcp,-hlocalhost是socket连接
            mysql -uroot -p -hlocalhost
    
    5.第三方连接工具
    #最常用的数据库连接工具是Navicat来连接数据库,这个数据库连接工具的功能非常强大,非常适合用来操作数据库
    
    # 在链接之前,必须创建远程连接用户
    mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'Oldboy@666' WITH GRANT OPTION;
    			
    ALL PRIVILEGES : 所有的权限
    *.*				: 正对于所有的库所有的表
    root			: 用户名
    localhost		: 可以链接的IP(%代表所有的IP)
    	
    mysql> FLUSH PRIVILEGES;
    

    mysqladmin 命令

    1.修改密码,设置密码:password
    [root@db03 ~]# mysqladmin -uroot -p旧密码 password '新密码'
     
    2.关闭MySQL服务:shutdown
    [root@db03 ~]# mysqladmin -uroot -p密码 -S socket文件 shutdown
     
    3.库外建库:create
    [root@db03 ~]# mysqladmin -uroot -p密码 create egon
    [root@db03 ~]# mysql -uroot -p123456 -e 'create database egon'
     
    4.库外删除数据库:drop
    [root@db03 ~]# mysqladmin -uroot -p123456 drop egon
    Do you really want to drop the 'egon' database [y/N] y
    Database "egon" dropped
     
    5.查看配置文件所有的默认参数:variables
    [root@db03 ~]# mysqladmin -uroot -p123456 variables
    [root@db03 ~]# mysqladmin -uroot -p123456 variables | grep server_id
     
    6.检测MySQL进程是否存活:ping
    [root@db03 ~]# mysqladmin -uroot -p123456 ping
     
    7.查看数据库 慢查询,负载信息:status
    [root@db03 ~]# mysqladmin -uroot -p123456 status
    Uptime                   MySQL服务器已经运行的秒数
    Threads                  活跃线程(客户)的数量 
    Questions                从mysqld启动起来自客户问题的数量   已经发送给服务器的查询的个数
    Slow queries             已经超过long_query_time秒的查询数量 
    Opens                    mysqld已经打开了多少表 
    Flush tables             flush ..., refresh和reload命令数量 
    Open tables              现在被打开的表数量
    Queries per second avg: 0.046   负载
     
    8.重载授权表,刷新缓存主机:reload,相当于flush privileges
    [root@db03 ~]# mysqladmin -uroot -p123456 reload
     
    9.刷新binlog日志
    [root@db03 ~]# mysqladmin -uroot -p123456 flush-log
    
    

    MySQL登录和退出

    -- 语法格式:
    	mysql -h hostname|hostlP -p port -u username -p DatabaseName -e "SQL语句"
    
    -- 退出
    exit
    quit
    \q
    
    #对上述参数说明如下:
    -- -h:指定连接 MySQL 服务器的地址。可以用两种方式表示,hostname 为主机名,hostIP 为主机 IP 地址。
    -- -P:指定连接 MySQL 服务器的端口号,port 为连接的端口号。MySQL 的默认端口号是 3306,因此如果不指定该参数,默认使用 3306 连接 MySQL 服务器。
    -- -u:指定连接 MySQL 服务器的用户名,username 为用户名。
    -- -p:提示输入密码,即提示 Enter password。
    -- DatabaseName:指定连接到 MySQL 服务器后,登录到哪一个数据库中。如果没有指定,默认为 mysql 数据库。
    -- -e:指定需要执行的 SQL 语句,登录 MySQL 服务器后执行这个 SQL 语句,然后退出 MySQL 服务器。
    
    [root@db01 ~]# mysql -e "desc world.student"
    +-------+-------------------+------+-----+---------+----------------+
    | Field | Type              | Null | Key | Default | Extra          |
    +-------+-------------------+------+-----+---------+----------------+
    | id    | int(11)           | NO   | PRI | NULL    | auto_increment |
    | name  | varchar(20)       | NO   |     | NULL    |                |
    | sex   | enum('男','女')   | YES  |     | 男      |                |
    +-------+-------------------+------+-----+---------+----------------+
    
    
    

    MySQL的内部命令

    \c:	终止正在输入的命令
        \r:	重新连接数据库
        \d:	修改sql语句结束符
        \e:	输出输入的内容
    \G:	以key:values形式展示数据
    \q:	退出数据库
        \g:	结束语句
        \h: 	查看帮助
        \T:	输出一个文件记录操作
        \t:	终止记录操作的文件
        \p:	打印输入的命令
        \R:		临时修改命令提示符
    \.	导入sql语句,等于 source 命令
        \s:	查看数据库连接状态
    \!:	在数据库里执行命令行命令
    \u	切换数据库,等于 use 命令
    
    
  • 相关阅读:
    IE 兼容问题笔记
    php编码与解码
    php 一些神奇加有趣的函数
    RESTful 规范
    关于CSS3背景渐变色无效问题
    ECShop
    php中的PHP_EOL换行符
    用 openSSL 生成 公钥 私钥
    app调用支付宝支付 笔记
    utf8 文件 错误保存为gbk 中文乱码 解决方法
  • 原文地址:https://www.cnblogs.com/backz/p/15326632.html
Copyright © 2011-2022 走看看