MySQL相关操作
一.MySQL常用操作
1.安装MySQL
进入目录下载mysql安装包并解压
[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# ls
mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz
[root@localhost src]# tar -zxvf mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz
移动mysql到/usr/local/mysql
[root@localhost src]# mv mysql-5.6.43-linux-glibc2.12-x86_64 /usr/local/mysql
添加用户
[root@localhost src]# useradd -s /sbin/nologin mysql
新建/data/mysql,更改所有者及所属组
[root@localhost src]# cd /usr/local/mysql/
[root@localhost mysql]# mkdir -p /data/mysql
[root@localhost mysql]# chown -R mysql:mysql /data/mysql/
编译
[root@localhost mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
需要下载扩展源perl-Module-Install
编译完成后测试是否成功
[root@xserver1 mysql]# echo $?
0
覆盖my.cnf文件
[root@xserver1 mysql]# cp support-files/my-default.cnf /etc/my.cnf
cp:是否覆盖"/etc/my.cnf"? y
复制mysql.server到init.d
[root@xserver1 mysql]# cp support-files/mysql.server /etc/init.d/mysqld
修改mysqld权限
[root@xserver1 mysql]# chmod 755 /etc/init.d/mysqld
修改mysqld文件
[root@xserver1 mysql]# vi /etc/init.d/mysqld
...
datadir=/data/mysql //此目录为初始化数据库时定义的目录
...
将脚本加入系统服务项
[root@xserver1 mysql]# chkconfig --add mysqld
设置开机自启
[root@xserver1 mysql]# chkconfig mysqld on
[root@xserver1 mysql]# service mysqld start
Starting MySQL.Logging to ‘/data/mysql/xserver1.err‘.
....... SUCCESS!
查看MySQL是否启动
2.更改root密码
源码安装需要更改将脚本命令加入环境变量中
方法一:
直接修改环境变量
[root@localhost mysql]# export PATH=$PATH:/usr/local/mysql/bin/
方法二:
将此段命令写入环境变量中
使环境变量生效
2.1创建mysql密码
创建MySQL的密码
[root@localhost mysql]# mysqladmin -uroot password ‘123456‘
Warning: Using a password on the command line interface can be insecure.
注:warning提示为屏幕输入密码不安全可以忽略
使用新创建密码登录
[root@localhost mysql]# mysql -uroot -p123456
注:当密码比较复杂时-p选项后可以加上’ ’单引号
2.2重置密码
修改配置文件
[root@localhost mysql]# vi /etc/my.cnf
...
[mysqld]
skip-grant //添加此行--忽略授权操作直接登录
...
重启mysql
[root@localhost mysql]# /etc/init.d/mysqld restart
登录mysql
[root@localhost mysql]# mysql
切换到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
对用户表进行更新
mysql> update user set password=password(‘wslinux‘) where user=‘root‘;
Query OK, 4 rows affected (0.01 sec)
Rows matched: 4 Changed: 4 Warnings: 0
注:第一个password表示一个字段,第二个password表示一个函数用来加密
从user表中查询用户名为root的密码(已加密)
将修改的配置文件删除
重启mysql
尝试使用新密码登录
3.连接mysql
3.1 输入用户名和密码来链接本机,直接登录数据库
[root@localhost mysql]# mysql -uroot -p‘wslinux‘
3.2链接其他ip远程服务器的MySQL
[root@localhost mysql]# mysql -uroot -p‘wslinux‘ -h127.0.01 -P3306
3.3 使用通讯方式socket登录,只适合本机登陆(相当于直接登录)
[root@localhost mysql]# mysql -uroot -p‘wslinux‘ -S/tmp/mysql.sock
3.4链接MySQL时进行操作命令
查看MySQL库列表
[root@localhost mysql]# mysql -uroot -p‘wslinux‘ -e "show databases"
注:-e后接操作命令
4.mysql常用命令
查询库
mysql> show databases;
切换库
mysql> use mysql;
查看库中表
mysql> show tables;
注:此表为MySQL库中的表,此操作需要进入库中操作
查看表中字段
mysql> desc user; //命令后跟表名
查看建表语句(查看表是如何创建的)
mysql> show create table user\G; //命令语句后跟表名
注:\G表示通过竖行显示
查看当前登录用户 (使用ip登录时会看到用户名)
mysql> select user();
查看当前使用的数据库
mysql> select database();
创建库
mysql> create database ws; //想要创建的库名
创建表(需要先切换到表中在创建)
mysql> use ws; create table t1(`id` int(4),`name` char(40));
注:上述命令可以分开进行也可以同时进行;第一个字段叫id,指定格式为int最长是4;第二个字段时name,格式为字段最长为40;需要使用 ` `引号扩起来
查看表内容
注:可以自定义字符集
删除表
自定义字符集
注:删除原来的表,在创建表的后面从新加上引擎和字符集
查看当前数据库版本
mysql> select version();
查看数据库状态
mysql> show status;
查看数据库的各参数
mysql> show variables;
mysql>show variables like ‘max_connect%‘;
注:第一段命令为查看所有参数,第二段为查看指定参数
修改参数(可以在my.cnf修改也可以在MySQL中修改)
修改链接数:
mysql> set global max_connect_errors=1000;
查看队列
mysql> show processlist;
mysql>show full processlist;
注:两段命令的差距在于info的区别,第二段命令可以显示全命令
5.mysql创建用户以及授权
使每个用户对某一个数据库有权限或者对某一个表有权限,目的是为了为防止误操作
进行授权
mysql> grant all on *.* to ‘user1‘ identified by ‘passwd‘; //对所有的权限,on表示在那个库中进行授权,*.*表示对所有的库进行授权,to表示对用户或ip进行授权,认证方式为passwd即密码登录
Query OK, 0 rows affected (0.00 sec)
mysql> grant SELECT,UPDATE,INSERT on db1.* to ‘user2‘@‘127.0.0.1‘ identified by ‘passwd‘;
Query OK, 0 rows affected (0.00 sec)
表示意义:给予权限为查询更新插入,授权库为db1开头的库都有此权限,受理用户为user2,指定ip登录,密码为passwd
mysql> grant all on db1.* to ‘user3‘@‘%‘ identified by ‘passwd‘;
Query OK, 0 rows affected (0.00 sec)
表示意义:给予所有权限,对所有ip进行授权,受理用户为user3,密码为passwd
注:mysql的命令历史文件不保存grant命令,MySQL的命令历史保存在root目录下
mysql的命令历史文件
查看授权表(查看root的指定授权表)
mysql> show grants;
查看user2受理的权限内容
mysql> show grants for user2@127.0.0.1; //查看指定用户的授权表信息
实例:
常用使用方法:当已知用户,需要增加授权的ip,但不知道密码时,只需要将查出来的grant表的内容从新做一遍即可
此时这个用户通过133.1和133.2都可以进行访问