一 设置更改root密码
root用户是MySQL的超级管理员用户,它跟linux系统里的root用户类似,当然这个root用户并不是系统的root用户,我们也可以创建一个普通用户来连接MySQL,默认MySQL的root用户密码为空,可以不用输入密码,直接就能连上,但这样并不安全,因此需要给root用户设置密码,假如设置完密码后有一段时间不用又忘记了,这又涉及到重置密码。
1、查看MySQL服务是否启动
# ps aux |grep mysqld
如果没有启动的话需要使用以下命令启动mysql服务
# /etc/init.d/mysqld start
2、首次登陆mysql
安装好mysql后首次登陆mysql是不需要密码的,因为系统默认MySQL的root用户密码为空,我们使用下面这个命令登陆
# /usr/local/mysql/bin/mysql -uroot //下图可以看到已经成功登录到mysql了
3、修改环境变量
上面的登录命令比较长,我们也可以使用下面的命令登陆
# mysql -uroot
上图看到我们不能直接使用这个命令,这是因为现在环境变量中还没有/usr/local/mysql/bin/这个路径,
# echo $PATH
所以我们需要先将/usr/local/mysql/bin/这个路径加入到环境变量中去,如下:
# export PATH=$PATH:/usr/local/mysql/bin/
设置完毕,我们再来使用简化命令登陆,下图可以看到,登陆成功
# mysql -uroot
但是这也只是临时生效,如果想要永久生效,还必须把上面的s设置export PATH=$PATH:/usr/local/mysql/bin/加入到/etc/profile这个文件中去,可以放到文件的最后一行
# vi /etc/profile
# source /etc/profile //这行命令要修改完成profile文件后执行,执行完这条命令后,就能永久生效了
4、设置密码并使用密码登录mysql
密码登录账号的命令是
# mysql -uroot -p //此时我们还未设置登录密码,在系统要求输入密码时直接按回车键
这时我们可以先退出mysql来,设置好密码后再使用密码登录,设置密码的命令是;
# mysqladmin -uroot password '112233' //设置root用户的密码是112233
上图的警告是提示我们设置的密码在当前行内显示出来了,这样不安全,可以忽略,上面设置好密码后我们就不能使用命令# mysql -uroot 这个命令来登录了
这时候我们就必需使用密码来登录
# mysql -uroot -p //在系统提示输入密码的地方输入我们之前设置好的密码即可登录成功
5、修改密码
如果我们知道root用户原来的密码,现在想要修改成新的密码,需要使用下面的命令
# mysqladmin -uroot -p'112233' password '123123'
修改完成后,我们直接将密码写在命令中来登录
# mysql -uroot -p'123123' //注意此处的密码是用单引号引起来的,我们也可以不使用单引号,但是密码中有可能出现#号、分号等特殊符号,这些特殊符号在linux命令行下可能不能被识别,因此一般建议将密码用单引号引起来
6、重置密码
当我们不知道root用户密码时候,就需要重置密码后再来登录,首先我们需要修改mysql的配置文件
# vim /etc/my.cnf
在配置文件中的[mysqld]下面加入以下内容:
skip-grant //含义是忽略授权,意思是在操作mysql时不需要授权,不用用户名和密码即可登录
修改完配置文件后,还需要重新启动mysqld服务
# /etc/init.d/mysqld restart
此时我们再登录就又不需要输入密码 了
# mysql -uroot
登录进来之后我们先切换到mysql的库中
# use mysql
接下来需要去user表中修改密码,我们的用户名密码就是存在这张表中的,表中还存了些权限、授权等信息,先来看下user表中的内容
mysql> select * from user; //注意这里一条命令后要加上分号
我们也可以查看一下root用户的密码
# select password from user where user='root';
可以看到root用户的密码是一长串字符串,这些字符串是用password()这个函数加密过后生成的
现在我们来修改密码使用下面这条命令,其中第一个password是字段,第二个password()是给密码加密的函数
> update user set password=password('112233') where user='root';
到此时,密码已经修改成功,我们就可以使用新的密码来登录了。但是我们还需要去将/etc/my.cnf 增加的一行内容删除,如果不删除,那么数据库所有的用户都可以不用输入密码就能直接登录,这是非常危险的
修改后重启mysqld # /etc/init.d/mysqld restart
二 连接MySQL
1、连接本机
# mysql -uroot -p123456
2、连接远程数据库
# mysql -uroot -p123456 -h127.0.0.1 -P3306
3、socket连接
之前LNMP时,php有一个socket,我们可以使用TCP/IP连接它,也可以使用socket连接它。mysql同样,不仅监听了3306端口,还监听了一个socket
那么我们就可以使用socket去连接它,其实这种方式和第一种连接方式是一样的,第一种连接方式是默认就使用mysql.sock这个socket去连接
# mysql -uroot -p112233 -S/tmp/mysql.sock
这种使用socket通信的方式只适合在本机
4、mysql登录+操作命令
下面命令是连接mysql之后还会有一些操作数据库的命令,执行完成后又退出数据库,这种方式适用于shell脚本里面
# mysql -uroot -p112233 -e 'show databases'; //执行登陆命令后立即显示所有的数据库然后退出数据库,
三 MySQL常用命令
1、查询库
> show databases; //查看mysql中有哪些数据库
2、切换库
> use mysql; //切换到mysql这个库下面
3、查看库里面的表
> show tables; //命令结尾记得加分号
4、查看表里面的字段
# desc user; //查看user表里面的字段
上图中Field列是字段的名字,Type列是数据类型
5、查看建表语句
# show create table user\G; //其中\G表示竖排显示
6、查看当前用户
# select user(); //用于查看当前mysql登录的用户是谁
结果查看到的用户是root@localhost ,其中localhost是登录用户所在主机的主机名,mysql是可以通过登录时的IP反解析出来主机名,
在mysql内容也是可以使用上下方向键来查看用过的命令历史,这些命令历史记录存放位置是:
# ls -la //当前位置在/root/下
命令历史记录存放在/root/.mysql_history文件中,我们来查看下:
# vim .mysql_history
同样的,mysql也支持ctrl+l清屏命令
7、查看当前使用的数据库
> select database(); //可以看到当前没有使用数据库,所以结果显示NULL
接下来我们切换到mysql数据库中
> use mysql //这条命令是可以不用分号结尾的
再来查看正在使用的数据库
> select database(); //此时查看结果显示正在使用的库是mysql
8、创建库
> create database db1; //创建名字为db1的数据库
接下来我们来查看mysql的库里面就可以看到已经多了一个db1库
9、创建表
首先需要切换到需要创建表的库中去
> use db1;
随后在db1这个库中新创建一张表
> create table t1(`id` int(4),`name` char(50));
这条命令表示的意思是创建一张表,表的名字叫t1,字段有id和name两个字段,他们的长度分别为4和50,其中字段需要用单引号引起来
我们用下面的命令也可以看到创建这张表的语句是什么
> show create table t1\G;
上图可以看到charset字符集的值为latin1,如果不想使用这种字符集,我们也可以像下面创建表,但是首先我们将刚才创建的表t1删除掉再重新创建
> drop table t1; //删除表t1
> create table t1(`id` int(4),`name` char(50)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
这条命令指定了在创建表时使用的引擎和默认字符集
再来查看下表t1的创建过程
> show create table t1\G;
10、查看当前数据库的版本
> select version();
11、查看数据库状态
> show status; //将常用的一些数据列出来
12、查看各种参数
> show variables; //可以看到有很多的参数,这些参数是可以在my.cnf中定义的
如果只记得某个参数的一部分,可以像下面这样来查看
> show variables like 'max_connect%';
13、修改参数
我们可以在my.cnf配置文件中修改参数,同时也可以在mysql命令行里面修改参数,让修改在内存中生效,比如我们可以将最大连接错误数max_connect_errors的值由100改为1000
> set global max_connect_errors=1000;
这时我们再来查看最大连接错误数max_connect_errors的值就变成了1000
上面的修改只是临时有效,如果我们退出mysql重新登录后之前的配置就无效了,如果想要重启mysql后也要生效,需要在my.cnf配置文件中去修改
# vim /etc/my.cnf
14、查看对列
> show processlist; //类似于在linux中用ps 或者top去查看
也可以使用下面的命令来查看更详细的信息
> show full processlist;
扩展
mysql5.7 root密码更改 http://www.apelearn.com/bbs/thread-7289-1-1.html
myisam 和innodb引擎对比 http://www.pureweber.com/article/myisam-vs-innodb/
mysql 配置详解: http://blog.linuxeye.com/379.html