100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 13.1-13.3 设置更改root密码 连接MySQL MySQL常用命令

13.1-13.3 设置更改root密码 连接MySQL MySQL常用命令

时间:2022-11-12 21:07:29

相关推荐

13.1-13.3 设置更改root密码 连接MySQL MySQL常用命令

13.1 设置更改root密码

大纲

准备工作:

1 启动mysql服务

[root@AliKvn ~]# /etc/init.d/mysqld start

Starting MySQL. [ OK ]

2 设置MySQL环境变量

因为#mysql命令需要使用绝对路径/ /usr/local/mysql/bin/mysql,这样太麻烦了,

所以需要更改环境变量PATH,增加mysql绝对路径。

# ls /usr/local/mysql/bin/mysql

/usr/local/mysql/bin/mysql

2.1 添加环境变量

[root@AliKvn ~]# export PATH=$PATH:/usr/local/mysql/bin/

测试使用mysql命令

2.2 使命令用久生效 把命令放在profile的最后面

[root@AliKvn ~]# vim /etc/profile

unset -f pathmunge

export PATH=$PATH:/usr/local/mysql/bin/

~

~

source /etc/profile 使其用久生效。

[root@AliKvn ~]# source /etc/profile

3 进入mysql

-u指定用户,-p指定密码(如果无密码,直接回车进入)

[root@AliKvn ~]# mysql -uroot -p

mysql> quit

Bye

4 因为MySQL第一次进去是不需要密码的,比较危险,所以需要设置密码

[root@AliKvn ~]# mysqladmin -uroot password 'aminglinux.1'

Warning: Using a password on the command line interface can be insecure.

测试指定密码进入

[root@AliKvn ~]# mysql -uroot -p

4.1 更改密码

[root@AliKvn ~]# mysqladmin -uroot -p'aminglinux.1' password 'aminglinux.2'

Warning: Using a password on the command line interface can be insecure.

5 密码重置(在没有root密码的时候修改root密码)

在[mysqld]增加skip-grant,此配置的意义就是忽略授权,加入配置后,不需要登录密码即可进入MySQL

#vi /etc/f

[root@AliKvn ~]# vim /etc/f

[mysqld]

skip-grant

datadir=/data/mysql

socket=/tmp/mysql.sock

5.1 配置完成后,重启服务使其生效。

[root@AliKvn ~]# /etc/init.d/mysqld restart

Shutting down MySQL.. [ OK ]

Starting MySQL. [ OK ]

5.2 测试

[root@AliKvn ~]# mysql -uroot

直接进入,无需任何认证。

mysql>

5.3 使用mysql库

mysql> use mysql;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

5.4 进入密码表

mysql> select password from user ;

+-------------------------------------------+

| password |

+-------------------------------------------+

| *C2586DB1E5698A5F1DC57808497DA087CC1EF767 |

| |

| |

| |

| |

| |

+-------------------------------------------+

6 rows in set (0.01 sec)

5.5 在密码表输入命令,更改密码

mysql> update user set password=password('aminglinux') where user='root';

Query OK, 4 rows affected (0.00 sec)

Rows matched: 4 Changed: 4 Warnings: 0

密码更新成功,quit退出mysql

mysql> quit

Bye

6 修改完成后,需要把跳过验证参数(skip-grant)删除,不然会发生很大安全隐患。

[root@AliKvn ~]# vim /etc/f

[mysqld]

datadir=/data/mysql

socket=/tmp/mysql.sock

修改后,重启服务

[root@AliKvn ~]# /etc/init.d/mysqld restart

Shutting down MySQL.. [ OK ]

Starting MySQL. [ OK ]

6.1 用新密码测试登录MySQL

[root@AliKvn ~]# mysql -uroot -paminglinux

Warning: Using a password on the command line interface can be insecure.

Welcome to the MySQL monitor. Commands end with ; or \g.

13.2 连接MySQL

1 本地 ip:port连接

[root@AliKvn ~]# mysql -uroot -paminglinux -h127.0.0.1 -P3306

2 还可以利用socket去连接。MySQL的socket在/tmp/mysql.sock

检查mysql.sock的监听状态

[root@AliKvn ~]# !ps

ps aux |grep mysql.sock

socket连接

[root@AliKvn ~]# mysql -uroot -paminglinux -S/tmp/mysql.sock

这种情况只适合用在本机上(这种方法和第一种是一样的,也是默认的连接方法)

3 连接MySQL顺便操作一些命令

[root@AliKvn ~]# mysql -uroot -paminglinux -e "show databases"

Warning: Using a password on the command line interface can be insecure.

+--------------------+

| Database|

+--------------------+

| information_schema |

| mysql |

| performance_schema |

| test |

+--------------------+

进入MySQL,然后执行#show databases命令。

这种情况适用在shell脚本,例如监听MySQL的连接数。

13.3 MySQL常用命令

慎记,MySQL里的命令在Linux上是执行不到的。但是通过mysql -e "命令" 可以指定执行。

在MySQL里面执行命令,以;结束。

连接MySQL

[root@AliKvn ~]# mysql -uroot -paminglinux

查询库 show databases;

切换库 use mysql;

查看库里的表 show tables;

查看整张表的内容 select * from tb_name;

查看表里的字段 desc tb_name;

字段,表,库三者的关系,库是由表组成,表是有字段组成。

操作:

查看user字段,

1 先切换库

use mysql;

mysql> use mysql;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

2 再查看user字段,

mysql> desc user;

查看建表语句 show create table tb_name\G;

查看当前用户 select user();

mysql> select user();

+----------------+

| user() |

+----------------+

| root@localhost |

+----------------+

1 row in set (0.00 sec)

当前用户是localhost,其实127.0.0.1连接进来也是localhost,因为127.0.0.1就是localhost.

接下来试试用本机ip连接看看

[root@AliKvn ~]# mysql -h172.18.171.157 -paminglinux

mysql> select user();

+-------------+

| user() |

+-------------+

| root@AliKvn |

+-------------+

1 row in set (0.00 sec)

AliKvn是本机的主机名,而172.18.171.157被传解析了,所以AliKvn是被172.18.171.157解析出来的。

MySQL的命令历史记录存在/root/.mysql_history

查看方法 less .mysql_history

查看当前使用的数据库 select databsase();

mysql> select database();

+------------+

| database() |

+------------+

| NULL |

+------------+

1 row in set (0.00 sec)

NULL为空,例如切换到mysql库下,这里不会显示空。

mysql> use mysql

Database changed

mysql> select database();

+------------+

| database() |

+------------+

| mysql |

+------------+

1 row in set (0.00 sec)

创建库 create database db1;

mysql> create database db1;

Query OK, 1 row affected (0.00 sec)

mysql> show databases;

+--------------------+

| Database|

+--------------------+

| information_schema |

| db1 |

| mysql |

| performance_schema |

| test |

+--------------------+

5 rows in set (0.00 sec)

创建表 create table t1(`id` int(4), `name` char(40));

1 先切换db1库

mysql> use db1;

Database changed

2 再创建表t1

mysql> create table t1(`id` int(4), `name` char(40));

Query OK, 0 rows affected (0.02 sec)

3 查看创建的表

mysql> show create table t1\G

*************************** 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.00 sec)

定义utf8格式

操作:

1 删除表

drop table t1;

mysql> drop table t1;

Query OK, 0 rows affected (0.01 sec)

2 定义utf8格式

mysql> create table t1(`id` int(4), `name` char(40)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Query OK, 0 rows affected (0.02 sec)

查看刚刚创建t1的表(utf8)

mysql> show create table t1\G;

*************************** 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

查看当前数据库版本 select version();

mysql> select version();

+-----------+

| version() |

+-----------+

| 5.6.35 |

+-----------+

1 row in set (0.00 sec)

查看数据库状态 show status;

将常用的数据列出来

查看各参数 show variables;

mysql> show variables;

查看指定参数,%表示通配符

mysql> show variables like 'max_connect%';

+--------------------+-------+

| Variable_name | Value |

+--------------------+-------+

| max_connect_errors | 100 |

| max_connections | 151 |

+--------------------+-------+

2 rows in set (0.00 sec)

修改参数 set global max_connect_errors=1000;(如果想永久生效,需要修改/etc/my.conf,添加相关配置参数)

mysql> set global max_connect_errors=1000;

Query OK, 0 rows affected (0.00 sec)

mysql> show variables like 'max_connect%';

+--------------------+-------+

| Variable_name | Value |

+--------------------+-------+

| max_connect_errors | 1000 |

| max_connections | 151 |

+--------------------+-------+

2 rows in set (0.00 sec)

max_connect_errors 1000 数值变成了1000

查看队列 两者体验在info上,full的比较完整。(查看队列命令用得最多,需要熟练使用)

mysql> show processlist;

+----+------+--------------+------+---------+------+-------+------------------+

| Id | User | Host | db | Command | Time | State | Info|

+----+------+--------------+------+---------+------+-------+------------------+

| 13 | root | AliKvn:56928 | NULL | Query | 0 | init | show processlist |

+----+------+--------------+------+---------+------+-------+------------------+

1 row in set (0.00 sec)

这个比较完整查看队列。

show full processlist;

mysql> show full processlist;

+----+------+--------------+------+---------+------+-------+-----------------------+

| Id | User | Host | db | Command | Time | State | Info |

+----+------+--------------+------+---------+------+-------+-----------------------+

| 13 | root | AliKvn:56928 | NULL | Query | 0 | init | show full processlist |

+----+------+--------------+------+---------+------+-------+-----------------------+

1 row in set (0.00 sec)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。