一、简介
MySQL是最流行的开放源码SQL数据库管理系统,它是由MySQL AB公司开发、发布并支持的。有以下特点:
- MySQL是一种数据库管理系统。
- MySQL是一种关联数据库管理系统。
- MySQL软件是一种开放源码软件。
- MySQL数据库服务器具有快速、可靠和易于使用的特点。
- MySQL服务器工作在客户端/服务器模式下,或嵌入式系统中。
- 有大量可用的共享MySQL软件。
二、安装MySQL
1# 安装依赖包 2 3yum install ncurses-devel gcc gcc-c++ -y 4 5# 创建目录mkdir /opt/software 6 7# 安装cmake软件,gmake编译安装 8 9cd /opt/software/ 10tar xf cmake-2.8.8.tar.gz 11cd cmake-2.8.8 12./configure 13#CMake has bootstrapped. Now run gmake. 14gmake 15gmake install 16cd ../ 17 18# 开始安装mysql# 创建用户和组groupadd mysqluseradd mysql -s /sbin/nologin -M -g mysql 19 20tar xf mysql-5.5.33.tar.gzcd mysql-5.5.33
cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.5.33 \
-DMYSQL_DATADIR=/application/mysql-5.5.33/data \
**-DMYSQL_UNIX_ADDR=/application/mysql-5.**5.33/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii \
-DENABLED_LOCAL_INFILE=ON \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITHOUT_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FAST_MUTEXES=1 \
-DWITH_ZLIB=bundled \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_READLINE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DWITH_DEBUG=0
1#-- Build files have been written to: /root/mysql-5.6.10 2提示: 编译时可配置的选项很多,具体可参考结尾附录或官方文档make installln -s /application/mysql-5.5.32/ /application/mysql如果上述操作未出现错误,则MySQL5.5.32软件cmake方式的安装就算成功了。 3 4#拷贝配置文件 5cp mysql-5.5.32/support-files/my-small.cnf /etc/my.cnf 6 7#添加变量,并使之生效 8echo 'export PATH=/application/mysql/bin:$PATH' >>/etc/profile 9source /etc/profile 10echo $PATH 11 12#授权用户及/tmp/临时文件目录 13chown -R mysql.mysql /application/mysql/data/ 14chmod -R 1777 /tmp/ 15 16#初始化数据库 17cd /application/mysql/scripts/ 18./mysql_install_db --basedir=/application/mysql/ --datadir=/application/mysql/data/ --user=mysql 19cd ../ 20 21#启动数据库 22cp support-files/mysql.server /etc/init.d/mysqld 23chmod +x /etc/init.d/mysqld 24/etc/init.d/mysqld start 25 26#检查端口 27netstat -lntup|grep 3306
编译安装完后一般安全操作:
1、删除不必要的用户和库:
1#查看用户和主机列,从mysql.user里查看 2select user,host from mysql.user; 3 4#删除用户名为空的库,并检查 5delete from mysql.user where user=''; 6select user,host from mysql.user; 7 8#删除主机名为localhost.localdomain的库,并检查 9delete from mysql.user where host='localhost.localdomain'; 10select user,host from mysql.user; 11 12#删除主机名为::1的库,并检查。::1库的作用为IPV6 13delete from mysql.user where host='::1';select user,host from mysql.user;#删除test库drop database test; 14 152、添加额外管理员: 16 17# 添加额外管理员,system作为管理员,oldgirl为密码 18mysql> delete from mysql.user;mysql>grant all privileges on *.* to system@'localhost' identified by 'system' with grant option;mysql>flush privileges;select user,host from mysql.user;3、设置登录密码并开机自启: 19 20#设置密码,并登陆 21/application/mysql/bin/mysqladmin -u root password 'oldgirl' 22mysql -usystem -p 23 24#开机启动mysqld,并检查 25chkconfig mysqld on 26chkconfig --list mysqld
三、字符集
对于新手来说,字符集乱码问题无疑是头痛的问题,小编就带你不在头痛,从此幸福。
1、字符集简介:
字符集,character set,就是一套表示字符的符号和这些的符号的底层编码;而校验规则,则是在字符集内用于比较字符的一套规则。简单的说,字符集就是一套文字符号及其编码、比较规则的集合,第一个计算机字符集ASC2,MySQL数据库字符集包括字符集和校对规则两个概念,字符集是定义数据库里面的内容字符串的存储方式,而校对规则是定义比较字符串的方式。
建议:中英文环境选择utf8
2、查看设置字符集
1# 查看MySQL字符集设置情况 2show variables like 'character_set%'; 3# 查看库的字符集 4show create database mysql; 5# 查看表的字符集 6show create table plugin\G 7# 查询所有 8show collation; 9 10# 设置表的字符集 11set tables utf8; 12 131> 系统方面 14cat /etc/sysconfig/i18n 15LANG="zh_CN.UTF-8" 16 172> 客户端(程序),调整字符集为latin1。 18mysql> set names latin1; #临时生效 19 20 #更改my.cnf客户端模块的参数,实现set name latin1 的效果,并且永久生效。 21 [client] 22default-character-set=latin1 23#无需重启服务,退出登录就生效,相当于set name latin1。 24 253> 服务端,更改my.cnf参数 26[mysqld] 27default-character-set=latin1 28character-set-server=latin1 29 304> 库、表、程序 31#建表指定utf8字符集 32mysql> create database nick_defailtsss DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
4、将utf8字符集修改成GBK字符集的实际过程
11> 导出表结构 2#以utf8格式导出 3mysqldump -uroot -p --default-character-set=utf8 -d mysql>20190227table.sql 4--default-character-set=gbk #表示已GBK字符集连接 –d 只表示表结构 5 62> 编辑alltable.sql 将utf8改成gbk。 7 83> 确保数据库不在更新,导出所有数据 9mysqldump -uroot -p --quick --no-create-info --extended-insert --default-character-set=utf8 mysql>20190227data.sql 10 114> 打开20190227data.sql将set name utf8 修改成 set names gbk(或者修改系统的服务端和客户端) 12 135> 建库 14create database oldsuo default charset gbk; 15 166> 创建表,执行alltable.sql 17mysql -uroot -p <20190227table.sql 18 197> 导入数据 20mysql -uroot -p <20190227table.sql
四、存储引擎
MySQL最常用存储引擎Myisam和Innodb。mysql 5.5.5以后默认存储引擎为Innodb。
MySQL的每种引擎在MySQL里是通过插件的方式使用的,MySQL可以支持多种存储引擎。
1、引擎对应系统文件
11) MyISAM引擎系统库表对应文件 2[root@mysql 3306]# ll /data/3306/data/mysql/ 3-rw-rw----. 1 mysql mysql 10630 10月 31 16:05 user.frm #保存表的定义 4-rw-rw----. 1 mysql mysql 1140 10月 31 18:40 user.MYD #数据文件 5-rw-rw----. 1 mysql mysql 2048 10月 31 18:40 user.MYI #索引文件 6 7[root@mysql 3306]# file data/mysql/user.frm 8data/mysql/user.frm: MySQL table definition file Version 9 9[root@mysql 3306]# file data/mysql/user.MYD 10data/mysql/user.MYD: DBase 3 data file (167514107 records) 11[root@mysql 3306]# file data/mysql/user.MYI 12data/mysql/user.MYI: MySQL MISAM compressed data file Version 1 13 142) InnoDB引擎 15 16[root@mysql 3306]# ll data/ 17-rw-rw----. 1 mysql mysql 134217728 10月 31 20:05 ibdata1
2、修改引擎
1创建后引擎的修改 2语法: ALTER TABLE student ENGINE = INNODB; 3 ALTER TABLE student ENGINE = MyISAM; 4 53、建表指定引擎 6 7mysql> create table mess ( 8 -> id int(4) not null, 9 -> name char(20) not null, 10 -> age tinyint(2) NOT NULL default '0', 11 -> dept varchar(16) default NULL 12 -> ) ENGINE=MyISAM CHARSET=utf8;
五、基本语句命令
运行相关:
11、 单实例mysql启动 2[root@localhost ~]# /etc/init.d/mysqld start 3Starting MySQL [确定] 4#mysqld_safe –user=mysql & 5 62、 查看MySQL端口 7[root@localhost ~]# ss -lntup|grep 3306 8tcp LISTEN 0 50 *:3306 *:* users:(("mysqld",19651,10)) 9 103、 查看MySQL进程 11[root@localhost ~]# ps -ef|grep mysql|grep -v grep 12root 19543 1 0 Oct10 ? 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/localhost.localdomain.pid 13mysql 19651 19543 0 Oct10 ? 00:05:04 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql --log-error=/usr/local/mysql/data/localhost.localdomain.err --pid-file=/usr/local/mysql/data/localhost.localdomain.pid --socket=/tmp/mysql.sock --port=3306 14 154、 MySQL启动原理 16/etc/init.d/mysqld 是一个shell启动脚本,启动后最终会调用mysqld_safe脚本,最后调用mysqld服务启动mysql。 17 "$manager" \ 18 --mysqld-safe-compatible \ 19 --user="$user" \ 20 --pid-file="$pid_file" >/dev/null 2>&1 & 21 225、关闭数据库 23[root@localhost ~]# /etc/init.d/mysqld stop 24Shutting down MySQL.... [确定] 25 266、 查看mysql数据库里操作命令历史 27cat /root/.mysql_history 28 297、 强制linux不记录敏感历史命令 30HISTCONTROL=ignorespace 31 328、 mysql设置密码 33/usr/local/mysql/bin/mysqladmin -u root password 'oldsuo' 34 359、 mysql修改密码,与多实例指定sock修改密码 36mysqladmin -uroot -passwd password 'oldsuo' 37mysqladmin -uroot -passwd password 'oldsuo' -S /data/3306/mysql.sock
操作相关:
1#登陆mysql数据库 2mysql -uroot –p 3 4#查看有哪些库 5show databases; 6#删除test库 7drop database test; 8 9#使用test库 10use test; 11#查看有哪些表 12show tables; 13#查看suoning表的所有内容 14select * from suoning; 15 16 17#查看当前版本 18select version(); 19#查看当前用户 20select user(); 21#查看用户和主机列,从mysql.user里查看 22select user,host from mysql.user; 23#删除前为空,后为localhost的库 24drop user ""@localhost; 25 26#刷新权限 27flush privileges; 28 29#跳出数据库执行命令 30system ls;
六、破解mysql登录密码
忘记mysql登录密码也是一件头疼的事,那么小编会让你继续幸福。
11> 普通方式 2#> service mysqld stop 3#>mysqld_safe --skip-grant-tables & 4输入 mysql -uroot -p 回车进入 5>use mysql; 6> update user set password=PASSWORD("newpass")where user="root"; 7更改密码为 newpassord 8> flush privileges; 更新权限 9> quit 退出 10service mysqld restart 11mysql -uroot -p新密码进入 122> 普通方式的简写 13service mysqld stop 14mysqld_safe --skip-grant-tables --user=mysql & 15mysql 16update mysql.user set password=PASSWORD("newpass")where user="root" and host='localhost'; 17flush privileges; 18mysqladmin -uroot -pnewpass shutdown 19/etc/init.d/mysqld start 20mysql -uroot -pnewpass #登陆 21 223>多实例方式 23killall mysqld 24mysqld_safe –defaults-file=/data/3306/my.cnf –skip-grant-table & 25mysql –u root –p –S /data/3306/mysql.sock #指定sock登陆 26update mysql.user set password=PASSWORD("newpass")where user="root"; 27flush privileges; 28mysqladmin -uroot -pnewpass shutdown 29/etc/init.d/mysqld start 30mysql -uroot -pnewpass #登陆