目录
MySQL数据库系统
mysql:TCP3306
ODBC:(Open DataBase control):开放式数据控制模型,为每个数据库系统的安装使用提供接口
MySQL是一个真正的多线程、多用户的SQL数据库服务,凭借其高性能、高可靠和易于使用的特性,成为服务器领域中最受欢迎的开源数据库系统。目前MySQL项目由Oracle公司负责运营和维护。
MySQL安装:
首先要将cmake和mysql软件包拖进去
[root@localhost ~]# mount /dev/cdrom /media/
//挂载镜像
[root@localhost ~]# yum -y install ncurses-base ncurses-libs ncurses-devel gcc*
//以yum方式安装ncurses-base ncurses-libs ncurses-devel
由于MySQL不支持mack编译工具,所以需要cmake(c语言的make)
[root@localhost ~]# tar -zxvf cmake-2.8.6.tar.gz -C /usr/src/
//将cmake编译工具解压到/usr/src目录下
[root@localhost ~]# cd /usr/src/cmake-2.8.6/
//切换到cmake目录
[root@localhost cmake-2.8.6]# ./configure
//调用configure工具
[root@localhost cmake-2.8.6]# gmake && gmake install
//使用gmake进行编译安装(gmake是GNUmake扩展工具)
(安装mysql需要使用cmake安装,但是cmake需要使用gmake安装)
[root@localhost cmake-2.8.6]# cd
[root@localhost ~]# tar zxvf mysql-5.6.36.tar.gz -C /usr/src/
//将mysql安装包解压到/usr/src/目录下
[root@localhost ~]# cd /usr/src/mysql-5.6.36/
//切换至mysql目录
[root@localhost mysql-5.6.36]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/opt/data -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all
选项:
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql:指定安装路径。
-DMYSQL_DATADIR=/usr/local/mysql/data:数据库目录。
-DSYSCONFDIR=/opt/data:指定初始化参数文件目录。
-DWITH_MYISAM_STORAGE_ENGINE=1:存储引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1:存储引擎
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock:指定套接字路径
-DMYSQL_TCP_PORT=3306:端口
-DENABLED_LOCAL_INFILE=1:允许从本地导入数据
-DWITH_PARTITION_STORAGE_ENGINE=1:静态存储引擎
-DDEFAULT_CHARSET=utf8:指定默认使用的字符集编码,如utf8。
-DDEFAULT_COLLATION=utf8_general_ci:指定默认使用的字符集校对规则,utf8_general_ci是适用于UTF-8字符集的通用规则。(指定校验字符串)
-DWITH_EXTRA_CHARSETS=all:指定额外支持的其他字符集编码
[root@localhost mysql-5.6.36]# make -j 4 && make install
//编译安装,使用4个cpu进行安装
[root@localhost ~]# systemctl stop firewalld
//关闭防火墙
[root@localhost ~]# setenforce 0
//关闭沙盒
[root@localhost ~]# vim /etc/my.cnf
修改为:
[mysqld]
datadir=/usr/local/mysql/data //存放数据库的目录
socket=/usr/local/mysql/mysql.sock //套接字文件
[mysqld_safe]
log-error=/var/log/mysqld.log //错误日志
pid-file=/usr/local/mysql/data/localhost.pid //进程ID文件(localhost为主机名)
[root@localhost ~]# useradd -r mysql
//创建系统用户
[root@localhost ~]# cd /usr/local/mysql/
//切换至mysql目录
[root@localhost mysql]# ls
//查看一下是否有scripts这个目录
bin data include man README share support-files
COPYING docs lib mysql-test scripts sql-bench
[root@localhost mysql]# cd scripts/
//然后切换进去
[root@localhost scripts]# ./mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
//初始化数据库
注意:如果报这个错是缺少了autoconf库模块,需要用yum安装
FATAL ERROR: please install the following Perl modules before executing ./mysql_install_db:
Data::Dumper
[root@localhost scripts]# yum -y install autoconf(安装完成后再进行初始化)
[root@localhost scripts]# ln -s /usr/local/mysql/bin/* /usr/bin/
//链接二进制文件
[root@localhost scripts]# ln -s /usr/local/mysql/include/* /usr/include/
//链接头文件,辅助文件
[root@localhost scripts]# ln -s /usr/local/mysql/lib/* /usr/lib
//链接库文件
[root@localhost scripts]# cd /usr/src/mysql-5.6.36/support-files/
切换至/usr/src/mysql-5.6.36/support-files/目录下
[root@localhost support-files]# cp mysql.server /etc/init.d/mysqld
//将/usr/src/mysql-5.6.36/support-files/mysql.server文件内容复制到/etc/init.d/mysqld
[root@localhost support-files]# chmod +x /etc/init.d/mysqld
//给/etc/init.d/mysqld增加权限 x:执行权限
[root@localhost support-files]# cd /usr/local/
切换至/usr/local
[root@localhost local]# chown -R mysql.mysql /usr/local/mysql/
//设置/usr/local/mysql/目录的属主和属组,递归设置
[root@localhost local]# vim /usr/lib/systemd/system/mysqld.service
//编写mysql启动文件
写入:
[Unit]
Description=MySQL Server
After=network.target
[Service]
User=mysql
Group=mysql
Type=forking
PIDFile=/usr/local/mysql/data/localhost.pid
ExecStart=/etc/init.d/mysqld start
ExecStop=/etc/init.d/mysqld stop
[Install]
WantedBy=multi-user.target
[root@localhost local]# /etc/init.d/mysqld start
Starting MySQL.. SUCCESS!
//启动mysql
最后一部验证
使用mysql命令
[root@localhost ~]# mysql
进入后可以查看一下四大数据库,注意:要以分号“;”结尾!
mysql> show databases;
MySQL默认数据库:(MySQL5.5及以前的版本)运行时的架构信息
information_schema:加载到内存中,MySQL运行时状态数据库
mysql:mysql系统库,存放DB系统信息
performance_schema:5.6版本新添加的数据库,存储引擎,优化数据库时使用,默认关闭;只能在/etc/my.cnf添加相关记录静态开启。
test:测试数据库,供学习使用
如果下次(重启后)需要使用mysql,需要再启动一下
[root@localhost ~]# /etc/init.d/mysqld start
Starting MySQL.. SUCCESS!
[root@localhost ~]# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.36 Source distribution
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>
恢复快照登录MySQL报错解决办法
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
1.重置/忘记密码的第一步就是跳过MySQL的密码认证过程,方法如下:
#vim /etc/my.cnf(注:windows下修改的是my.ini)
在文档内搜索mysqld定位到[mysqld]文本段:
/mysqld(在vim编辑状态下直接输入该命令可搜索文本内容)
在[mysqld]后面任意一行添加“skip-grant-tables”用来跳过密码验证的过程,如下图所示:
保存文档并退出
2.接下来我们需要重启MySQL:
/etc/init.d/mysql restart(有些用户可能需要使用/etc/init.d/mysqld restart)
3.重启之后输入mysql即可进入mysql。
MySQL数据库常见命令
搭建MySQL环境并且登录后可以对MySQL进行一些管理,命令如下:
注意:MySQL数据库中所有命令都要以“;”(分号)结尾
一:使用MYSQL数据库
登录:
[root@localhost ~]# /etc/init.d/mysqld start //启动MySQL服务
Starting MySQL.. SUCCESS!
[root@localhost ~]# mysql //登录mysql数据库
查看当前服务器中有哪些数据库
mysql> show databases;
查看mysql数据库中包含的所有表
mysql> use mysql; //切换至mysql数据库
Database changed //成功提示信息
mysql> show tables; //查看当前数据库包含的表(mysql)
查看表的结构
mysql> describe user;
二:创建,删除数据库与表
创建库
mysql> create database xuan; //创建名为“xuan”的数据库
Query OK, 1 row affected (0.02 sec) //成功提示信息
创建表
mysql> create table ting (id int,name char(10),primary key(id));
//创建一个名为“ting”的表,字段名为id,数据类型为int(数字)类型
字段名为name,数据类型为char(10)字符类型,并且给id字段设置了主键约束
Query OK, 0 rows affected (0.04 sec)
删除表
mysql> drop table ting; //删除名为“ting”的表
Query OK, 0 rows affected (0.01 sec)
删除库
mysql> drop database xuan; //删除名为“xuan”的数据库
Query OK, 0 rows affected (0.00 sec)
三:管理表中数据记录
1.插入数据
方式一:
mysql> insert into ting values (1,'huge'); //给ting中插入数据,
Query OK, 1 row affected (0.00 sec) 分别对应id和name值
方式二:
mysql> insert into ting(name,id) values ('along',2); //给hugebiao中插入数据,
Query OK, 1 row affected (0.00 sec) 自定义了字段数据顺序
方式三:
mysql> insert into ting(id,name) values (3,'shiqing'); //指定添加哪些字段内容
mysql> update ting set id=5 where name='zhangsan';
//将ting中名为zhangsan的id值改为5
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
4.删除表中数据:
mysql>delete from ting where name=’zhangsan’;
5.设置root用户密码
(1)mysql>mysqladmin -u root -p password 123.com;
(2)mysql>update user set password=password(‘123.com;) where user=’root’;
刷新即生效所有更改过的信息:flush privileges;
修改root用户密码:
方法一:mysql>update user set password=PASSWORD('123456') where user='root';
FLUSH PRIVILEGES; 刷新更改的信息使之生效
方法二:mysql>mysqladmin -u root password 123.com;
四:维护MYSQL数据库
- 授权给用户:
mysql>grant select on *.* to ‘yonghu’ @’localhost’ identified by ‘123.com’;
添加用户’yonghu’给他有查询(*.*)本机所有库中所有表的权限,密码为123.com
mysql>grant all on *.* to ‘yf’ @’192.168.1.100’ identified by ‘123.com’;
添加用户’yf’给他所有(*.*)192.168.1.100地址所有库中所有表的权限,密码为123.com
刷新即生效所有更改过的信息:flush privileges;
- 客户端远程连接验证
[root@localhost ~]mysql -u yf -p123.com -h 192.168.1.10(用户所在的终端机)
- 查看数据库用户的权限信息
mysql>show grants for ‘yf’ @ ‘192.168.1.100’
- 撤销用户权限
mysql>revoke grants for ‘yf’ @ ‘192.168.1.100’