mysql的简介
概述
就是一个关系型数据库管理系统,由瑞典MYSQL AB公司开发,目前属于Oracle公司。
mysql是开源的。所以你不需要支付额外的费用
mysql是可以定制的,采用了GPL协议,你可以修改源码来开发自己的mysql系统。
mysql支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
mysql的安装
mysql5.5
下载地址:https://dev.mysql.com/downloads/mysql/
国内的下载的镜像地址我推荐使用清华镜像地址:https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/
检查工作
检查当前的系统是否安装过mysql
在centOS6中
rpm -qa | grep mysql
rpm命令是是RPM软件包的管理工具,
其中-q:使用询问模式,当遇到任何问题时,rpm指令会先询问用户;
-a:查询所有套件;
-e<套件档>或--erase<套件档>:删除指定的套件;
如果存储mysql-libs的旧版本包如下:
请先执行卸载命令:rpm -e --nodeps mysql-libs
在centOS7中
rpm -qa | grep mariadb
如果存储如下:
请先执行卸载命令:rpm -e --nodeps mariadb-libs
检查/tmp文件夹的权限
由于mysql安装过程中,会通过mysql用户在/tmp目录下新建tmp_db文件,所以请给/tmp较大的权限
执行: chmod -R 777 /tmp (如果你是在root用户下操作的,可以省略)
安装
首先把安装包上传到linux服务器上。我这个版本我放在了/opt 目录下。
/opt目录用来安装附加软件包,是用户级的程序目录,可以理解为D:/Software,opt有可选的意思
在mysql的安装目录下执行:
rpm -ivh MySQL-client-5.5.54-1.linux2.6.x86_64.rpm (安装客户端)
rpm -ivh MySQL-server-5.5.54-1.linux2.6.x86_64.rpm (安装服务端)
安装完设置初始化的密码:
mysqladmin -u root password ‘你的密码‘
mysql的安装位置
在linux中查看安装目录:ps -ef | grep mysql
参数 | 路径 | 解析 | 备注 |
--basedir | /usr/bin | 相关命令目录 |
mysqladmin mysqldump等命令 |
--datadir | /var/lib/mysql/ | mysql数据库文件的存放路径 | |
--plugin-dir | /usr/lib64/mysql/plugin | mysql插件存放路径 | |
--log-error | /usr/lib64/mysql/jack.at***.err | mysql错误日志路径 | |
--pid-file | /var/lib/mysql/jack.**.pid | 进程pid文件 | |
--socket | /var/lib/mysql/mysql.sock | 本地连接时用的unix套接字 | |
/usr/share/mysql | 配置文件目录 | mysql脚本及配置文件 | |
/etc/init.d/mysql | 服务启停相关脚本 |
自启动:chkconfig mysql --list
开始使用
mysql -uroot -proot (进入mysql命令窗口)
显示数据库:show databases
创建一个数据库:create database mydb
使用其中的一个库 :user mydb
创建表:crate table mytable(id int , name varchart(200));
插入数据:insert into mytable values(1,‘张三‘);
查询数据:select * from mytable;
发现出现了乱码
显示字符集:show varables like ‘character%‘;
修改字符集
cd /usr/share/mysql/ 发现很多mysql的配置
拷贝my-huge.conf 到 /etc/
在/usr/share/mysql/目录下执行
cp my-huge.cnf /etc
重命名
mv my-huge.conf my.cnf
修改my-cnf文件:
[client] default-character-set=utf8 [mysqld] character_set_server=utf8 character_set_client=utf8 collation-server=utf8_general_ci [mysql] default-character-set=utf8 |
使用vi 命令打开文件: vi my.cnf 把上面的配置加上去。ctrl+: 输入wq!保存退出。
重启mysql服务
service mysql restart (如果没有配置错误就可以了)
进去查询那条数据还是乱码的,因为开始的时候就是以拉丁的字符集创建的,现在改成utf8还是乱码的。需要把这条数据更新或者删除才可以解决。
现在远程连接mysql发现还是连接不上的。
mysql > GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘数据库的密码‘ WITH GRANT OPTION; 就可以远程连接了
mysql的用户和权限管理
mysql的用户管理
创建用户
create user zhangsan identified by ‘123456‘ (表示创建名称为张三的用户,密码设为123456)
了解用户表
查看用户:
select host,user,password,select_priv,insert_priv,drop_priv from mysql.user,
host : 表示连接类型
%表示所有远程通过TCP方式连接
IP地址 如(192.168.0.147,127.0.0.1)通过指定ip地址进行的TCP方式的连接
机器名 通过制定网络中的机器名进行TCP方式的连接
::1 IPV6的本地地址 等同与IP4的127.0.0.1
localhost 本地方式通过命令方式的连接。比如mysql -uxxx -p123xxx方式的连接。
User: 表示用户名
同一用户通过不同方式连接的权限是不一样的。
password 密码
所有密码串通过password(明文字符串)生成的密文字符串。加密算法为MYSQLSHA1.不可逆。
mysql5.7的密码保存到authentication_string字段中不再使用password字段。
设置密码
修改当前用户密码
set password =password(‘123456‘)
修改某个用户密码:
update mysql.user set password=password(‘123456‘) where user=‘用户名称‘
flush privileges; #所有通过user表的修改,必须用该命令才能生效。
修改用户
修改用户名:
update mysql.user set user=‘lisi‘ where user=‘wangwu‘;
flush privileges; #所有通过user表的修改,必须用该命令才能生效。
删除用户
drop user 用户名称;
权限管理
授予权限
授权命令:grant 权限1,权限2,...权限n on 数据库名称.表名称to用户名@用户地址 identified by ‘连接口令’;
该权限如果发现没有该用户,则会直接新建一个用户。
比如:
grant select,insert,delete,drop on atfycdb.* to lisi@localhost ;(给lisi用户用本地命令行方式下,授予atfycdb这个库下的所有表的插删该查的权限)
grant all privileges on *.* to fyc@‘%‘ identified by ‘123‘;(#授予通过网络方式登陆的fyc用户,对所有库的所有表的全部权限,密码设为123)
收回权限
收回权限命令 revoke 权限1,权限2,... 权限n on 数据库名称.表名称 from 用户名@用户地址;
revoke all privileges
查看权限
查看当前用户权限: show grants;
通过工具远程访问
专项配置
索引的介绍
mysql的存储引擎