周翔 发表于 2018-10-6 06:51:37

五十二、设置更改root密码、连接MySQL、MYSQL常用命令

  五十二、设置更改root密码、连接MySQL、MYSQL常用命令
  一、设置更改root密码
  root用户是MySQL的超级管理员用户,这个root和系统的root并不是一个用户,需要区分开,也可以创建普通用户来连接MySQL。
  默认的MySQL的root用户密码是空的,可以直接连接上。
  # ps aux |grep mysql          先检查mysql有没有打开
  # /etc/init.d/mysqld start
  # mysql -uroot
  -bash: mysql: 未找到命令
  因为mysql这个命令没有在环境变量中,所以这个命令不能直接使用。
  # ls /usr/local/mysql/bin/mysql      mysql命令的路径
  /usr/local/mysql/bin/mysql
  # echo $PATH         环境变量中没有mysql命令的路径
  /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
  # export PATH=$PATH:/usr/local/mysql/bin/    更改环境变量,加一个
  # mysql -uroot             再使用就可以了
  Welcome to the MySQL monitor.Commands end with ; or \g.

  Your MySQL connection>  Server version: 5.6.36 MySQL Community Server (GPL)
  Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
  Oracle is a registered trademark of Oracle Corporation and/or its
  affiliates. Other names may be trademarks of their respective
  owners.
  Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  mysql>
  要想这条命令永久生效,还要把这条命令放到/etc/profile下面,放到最后面,就可以了。
  # source /etc/profile   加完以后,需要执行这条。使变量立即生效。
  # mysql -uroot -p      //-p,指定root的登录密码,现在是空,直接回车。
  在这个里面就可以操作MySQL的行为,先quit退出。
  # mysqladmin -uroot password '123456'
  Warning: Using a password on the command line interface can be insecure.
  警告:在命令行界面上使用密码可能是不安全的。
  再次登录时就需要输入登录密码了,不然登不进。
  知道密码时更改密码:
  # mysqladmin -uroot -p'123456' password '1234'
  Warning: Using a password on the command line interface can be insecure.
  这个提示不用管,和上面的设置密码的一样。
  # mysql -uroot -p'1234'   登录,指定登录密码时加上单引号,防止有些符号命令行无法识别。
  不知道密码时更改密码:
  # vim /etc/my.cnf
            在mysqld这部分
  skip-grant       加上这一行,意思是忽略授权,就不用用户名密码可以直接登录了。
  datadir=/data/mysql
  socket=/tmp/mysql.sock
  # /etc/init.d/mysqld restart      重启服务才能生效
  # mysql -uroot       直接回车就进去了,要在里面更改一个user表。
  user表:存用户密码的表。
  mysql> use mysql;             use mysql,切换到mysql库。
  mysql> select * from user;      查看一下这个表。
  mysql> select password from user;
  +------------------------------------------------------------------------+
  | password                                                                           |
  +------------------------------------------------------------------------+
  | *A4B6157319038724E3560894F7F932C8886EBFCF |
  | 这里可以看到密码的加密字符串                                       |
  |                                                                                          |
  |                                                                                          |
  |                                                                                          |
  |                                                                                          |
  +------------------------------------------------------------------------+
  6 rows in set (0.00 sec)
  这个密码实际上是用password这个函数来生成的,所以改密码时也需要用这个函数来加密。
  用这条命令来更改密码:
  update user set password=password('12345')where user='root';
  Query OK, 4 rows affected (0.08 sec)
  Rows matched: 4Changed: 4Warnings: 0
  这样密码就改完了,然后quit退出来,还需要把刚才加的skip-grant删掉。
  # /etc/init.d/mysqld restart
  # mysql -uroot -p12345   -p后面不要加空格,加空格就错了。
  二、连接MySQL
  # mysql -uroot -p12345   连接本机
  # mysql -uroot -p12345 -h127.0.0.1 -P3306
  连接远程,-h指定目标IP,-P指定端口,比如从A服务器连接B服务器的MySQL,这里以连接本机为示范,如果不指定端口默认就是3306。
  # mysql -uroot -p12345 -S/tmp/msyql.sock
  使用sock连接,这种情况只适合在本机。
  # mysql -uroot -p12345 -e "show databases"
  连接MySQL之后操作一些命令,这个命令是把所有的数据库列出来。这个情况使用在shell脚本里。
  三、MySQL常用命令
  查询库show databases;
  切换库use mysql;
  查看库里的表show tables;
  查看表里的字段desc tb_name;       示例:desc user;
  查看建表语句show create table tb_name\G;    \G:竖排显示,先头的select * from user\G;也可以加上\G,显示就很清晰了。
  查看当前用户select user();
  查看当前使用的数据库select database();
  有些命令是MySQL里面的,不能在MySQL外面执行,Linux是无法识别。
  # mysql -uroot -p12345 -h192.168.93.130      用别的IP登录再查看就不是localhost了,会反解析登录的用户名。
  mysql> select user();
  +----------------+
  | user()          |
  +----------------+
  | root@MRX |
  +----------------+
  1 row in set (0.01 sec)
  mysql> select database();
  +------------+
  | database() |
  +------------+
  | NULL       |当前数据库是空,当切换到mysql时,显示的就是mysql。
  +------------+
  1 row in set (0.00 sec)
  mysql命令历史的文件:.mysql_history
  创建库create database db1;
  创建表use db1;create table t1(`id` int(4), `name` char(40));
  查看当前数据库版本select version();
  查看数据库状态show status;
  查看各参数show variables;
  查看指定的参数show variables like'max_connect%';这里%是通配。
  修改参数set global max_connect_errors=1000;
  可以通过修改/etc/my.cnf修改参数,也可以临时修改在内存中生效。
  查看队列show processlist;show full processlist;
  这个就相当于Linux的ps或者top命令,加上full就更完整,查看当前MySQL在干什么,哪些用户在连接,他连接它的时候在执行什么操作,有没有锁表。
  mysql> create database db1;
  Query OK, 1 row affected (0.29 sec)
  mysql> use db1;
  Database changed
  mysql> create table t1(`id` int(4), `name` char(40));
  Query OK, 0 rows affected (0.40 sec)
  表名是t1,定义字段id和name,格式是int和char,字符串最长4和40。
  mysql> show create table t1\G;   查看t1的建表语句
  *************************** 1. row ***************************
  Table: t1
  Create Table: CREATE TABLE `t1` (
  `id` int(4) DEFAULT NULL,
  `name` char(40) DEFAULT NULL
  ) ENGINE=InnoDB DEFAULT CHARSET=latin1
  1 row in set (0.28 sec)
  ERROR:
  No query specified
  InnoDB的引擎,latiin1的字符集,这个都可以自定义。
  create table t1(`id` int(4), `name` char(40)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  命令前面加一个#就不会生效了。
  mysql> drop table t1;            先删除这个表
  再来执行这条定义字符集的命令:
  create table t1(`id` int(4), `name` char(40)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  Query OK, 0 rows affected (0.34 sec)
  mysql> show create table t1\G;   再查看就显示的是utf8了。
  *************************** 1. row ***************************
  Table: t1
  Create Table: CREATE TABLE `t1` (
  `id` int(4) DEFAULT NULL,
  `name` char(40) DEFAULT NULL
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8
  1 row in set (0.00 sec)
  ERROR:
  No query specified
  mysql> select version();      查看数据库版本5.6.36
  +-----------+
  | version() |
  +-----------+
  | 5.6.36    |
  +-----------+
  1 row in set (0.00 sec)

页: [1]
查看完整版本: 五十二、设置更改root密码、连接MySQL、MYSQL常用命令