什么是数据(Data)
描述事物的符号记录称为数据,描述事物的符号既可以是数字,也可以是⽂字、图⽚,图像、声⾳、语⾔等,数据由多种表现形式,它们都可以经过数字化后存⼊计算机,在计算机中描述⼀个事物,就需要抽取这⼀事物的典型特征,组成⼀条记录,就相当于⽂件⾥的⼀⾏内容什么是数据库(DataBase,简称DB)
数据库即存放数据的仓库,但仓库是在计算机存储设备上,⽽且数据是按⼀定的格式存放的数据库是长期存放在计算机内、有组织、可共享的数据
数据库中的数据按⼀定的数据模型组织、描述和储存,具有较⼩的冗余度、较⾼的数据独⽴性和易扩展性,并可为各种 ⽤户共享什么是数据库管理系统(DataBase Management System 简称DBMS)
在了解了Data与DB的概念后,如何科学地组织和存储数据,如何⾼效获取和维护数据成了关键,这就⽤到了⼀个系统软件---数据库管理系统。例如MySQL、Oracle、SQLite、Access、MS SQL Server等。mysql主要⽤于⼤型门户,例如搜狗、新浪等,它主要的优势就是开放源代码。数据库管理软件分类
关系型:如sqllite,db2,oracle,access,sql server,MySQL,注意:sql语句通⽤ (关系型数据库需要有表结构)⾮关系型:mongodb,redis,memcach (⾮关系型数据库是key-value存储的,没有表结构)
mysql 介绍
MySQL是⼀个关系型数据库管理系统,由瑞典MySQL AB 公司开发,⽬前属于 Oracle 旗下公司。MySQL 最流⾏的关系型数据库管理系统,在 WEB 应⽤⽅⾯MySQL是最好的RDBMS (Relational Database Management System,关系数据库管理系统) 应⽤软件之⼀并且mysql就是⼀个基于socket编写的C/S架构的软件。mysql 安装Linux系统⼆进制rpm包安装
yum -y install mysql-server mysql
源码安装 mysql
1.解压tar包cd /software
tar -xzvf mysql-5.6.21-linux-glibc2.5-x86_64.tar.gzmv mysql-5.6.21-linux-glibc2.5-x86_64 mysql-5.6.212.添加⽤户与组groupadd mysql
useradd -r -g mysql mysql
chown -R mysql:mysql mysql-5.6.21
3.安装数据库su mysql
cd mysql-5.6.21/scripts
./mysql_install_db --user=mysql --basedir=/software/mysql-5.6.21 --datadir=/software/mysql-5.6.21/data4.配置⽂件
cd /software/mysql-5.6.21/support-filescp my-default.cnf /etc/my.cnfcp mysql.server /etc/init.d/mysql
vim /etc/init.d/mysql #若mysql的安装⽬录是/usr/local/mysql,则可省略此步修改⽂件中的两个变更值
basedir=/software/mysql-5.6.21datadir=/software/mysql-5.6.21/data
5.配置环境变量vim /etc/profile
export MYSQL_HOME=\"/software/mysql-5.6.21\"export PATH=\"$PATH:$MYSQL_HOME/bin\"source /etc/profile6.添加⾃启动服务chkconfig --add mysqlchkconfig mysql on7.启动mysql
service mysql start
8.登录mysql及改密码与配置远程访问
mysqladmin -u root password 'your_password' #修改root⽤户密码mysql -u root -p #登录mysql,需要输⼊密码
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_password' WITH GRANT OPTION; #允许root⽤户远程访问mysql>FLUSH PRIVILEGES; #刷新权限
View Code源码安装 mariadb
1. 解压
tar zxvf mariadb-5.5.31-linux-x86_64.tar.gz
mv mariadb-5.5.31-linux-x86_64 /usr/local/mysql //必需这样,很多脚本或可执⾏程序都会直接访问这个⽬录2. 权限
groupadd mysql //增加 mysql 属组
useradd -g mysql mysql //增加 mysql ⽤户 并归于mysql 属组
chown mysql:mysql -Rf /usr/local/mysql // 设置 mysql ⽬录的⽤户及⽤户组归属。 chmod +x -Rf /usr/local/mysql //赐予可执⾏权限
3. 拷贝配置⽂件
cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf //复制默认mysql配置 ⽂件到/etc⽬录 4. 初始化
/usr/local/mysql/scripts/mysql_install_db --user=mysql //初始化数据库
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql //复制mysql服务程序 到系统⽬录 chkconfig mysql on //添加mysql ⾄系统服务并设置为开机启动 service mysql start //启动mysql
5. 环境变量配置
vim /etc/profile //编辑profile,将mysql的可执⾏路径加⼊系统PATHexport PATH=/usr/local/mysql/bin:$PATH source /etc/profile //使PATH⽣效。
6. 账号密码
mysqladmin -u root password 'yourpassword' //设定root账号及密码mysql -u root -p //使⽤root⽤户登录mysqluse mysql //切换⾄mysql数据库。
select user,host,password from user; //查看系统权限drop user ''@'localhost'; //删除不安全的账户drop user root@'::1';
drop user root@127.0.0.1;
select user,host,password from user; //再次查看系统权限,确保不安全的账户均被删除。flush privileges; //刷新权限
7. ⼀些必要的初始配置1)修改字符集为UTF8vi /etc/my.cnf
在[client]下⾯添加 default-character-set = utf8在[mysqld]下⾯添加 character_set_server = utf82)增加错误⽇志vi /etc/my.cnf
在[mysqld]下⾯添加:
log-error = /usr/local/mysql/log/error.log
general-log-file = /usr/local/mysql/log/mysql.log
3) 设置为不区分⼤⼩写,linux下默认会区分⼤⼩写。vi /etc/my.cnf
在[mysqld]下⾯添加:
lower_case_table_name=18)修改完重启
service mysql restart
View Codewindows系统
1、下载:MySQL Community Server 5.7.16http://dev.mysql.com/downloads/mysql/
2、解压
如果想要让MySQL安装在指定⽬录,那么就将解压后的⽂件夹移动到指定⽬录,如:C:\\mysql-5.7.16-winx64
3、添加环境变量
【右键计算机】--》【属性】--》【⾼级系统设置】--》【⾼级】--》【环境变量】--》【在第⼆个内容框中找到 变量名为Path 的⼀⾏,双击】 --> 【将MySQL的bin⽬录路径追加到变值值中,⽤ ; 分割】
4、初始化
mysqld --initialize-insecure5、启动MySQL服务
mysqld # 启动MySQL服务
6、启动MySQL客户端并连接MySQL服务mysql -u root -p # 连接MySQL服务器
上⼀步解决了⼀些问题,但不够彻底,因为在执⾏【mysqd】启动MySQL服务器时,当前终端会被hang住,那么做⼀下设置即可解决此问题:
注意:--install前,必须⽤mysql启动命令的绝对路径# 制作MySQL的Windows服务,在终端执⾏此命令:\"c:\\mysql-5.7.16-winx64\\bin\\mysqld\" --install
# 移除MySQL的Windows服务,在终端执⾏此命令:\"c:\\mysql-5.7.16-winx64\\bin\\mysqld\" --remove
注册成服务之后,以后再启动和关闭MySQL服务时,仅需执⾏如下命令:# 启动MySQL服务net start mysql
# 关闭MySQL服务net stop mysql
View Code
mysql 基础设置
启动mysql
[root@ ~]# systemctl start mariadb #启动
[root@ ~]# systemctl enable mariadb #设置开机⾃启动
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.[root@ ~]# ps aux |grep mysqld |grep -v grep #查看进程,mysqld_safe为启动mysql的脚本⽂件,内部调⽤mysqld命令mysql 3329 0.0 0.0 113252 1592 ? Ss 16:19 0:00 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
mysql 3488 0.0 2.3 839276 90380 ? Sl 16:19 0:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/v[root@ ~]# netstat -an |grep 3306 #查看端⼝
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
[root@ ~]# ll -d /var/lib/mysql #权限不对,启动不成功,注意user和groupdrwxr-xr-x 5 mysql mysql 4096 Jul 20 16:28 /var/lib/mysql
安装完mysql 之后,登陆以后,不管运⾏任何命令,总是提⽰这个
mac mysql error You must reset your password using ALTER USER statement before executing this statement.解决⽅法:
step 1: SET PASSWORD = PASSWORD('your new password');
step 2: ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;step 3: flush privileges;
View Code登录、设置密码
初始状态下,管理员root,密码为空,默认只允许从本机登录localhost设置密码
[root@ ~]# mysqladmin -uroot password \"123\" 设置初始密码 由于原密码为空,因此-p可以不⽤
[root@ ~]# mysqladmin -uroot -p\"123\" password \"456\" 修改mysql密码,因为已经有密码了,所以必须输⼊原密码才能设置新密码命令格式:
[root@ ~]# mysql -h172.31.0.2 -uroot -p456[root@ ~]# mysql -uroot -p
[root@ ~]# mysql 以root⽤户登录本机,密码为空
View Code
mysql密码遗失
Linux系统下处理⽅法
#所有授权信息全部丢失
[root@ ~]# rm -rf /var/lib/mysql/mysql [root@ ~]# systemctl restart mariadb[root@ ~]# mysql
⽅法⼀
mysql主配置⽂件
[root@ ~]# vim /etc/my.cnf [mysqld]
skip-grant-table
[root@ ~]# systemctl restart mariadb[root@ ~]# mysql
MariaDB [(none)]> update mysql.user set password=password(\"123456\") where user=\"root\" and host=\"localhost\";MariaDB [(none)]> flush privileges;MariaDB [(none)]> \\q
[root@ ~]# #打开/etc/my.cnf去掉skip-grant-table,然后重启[root@ ~]# systemctl restart mariadb 以新密码登录
[root@ ~]# mysql -u root -p123456
⽅法⼆
Windows系统下(5.7版本mysql)处理⽅法
1 关闭mysql
2 在cmd中执⾏:mysqld --skip-grant-tables3 在cmd中执⾏:mysql4 执⾏如下sql:
update mysql.user set authentication_string=password('') where user = 'root';flush privileges;
5 tskill mysqld #或taskkill -f /PID 78326 重新启动mysql
⽅法⼀
1. 关闭mysql,可以⽤tskill mysqld将其杀死2. 在解压⽬录下,新建mysql配置⽂件my.ini3. my.ini内容,指定[mysqld]
skip-grant-tables
4.启动mysqld
5.在cmd⾥直接输⼊mysql登录,然后操作
update mysql.user set authentication_string=password('') where user='root and host='localhost';flush privileges;
6.注释my.ini中的skip-grant-tables,然后启动myqsld,然后就可以以新密码登录了
⽅法⼆
windows下为mysql服务指定配置⽂件(强调:配置⽂件中的注释可以有中⽂,但是配置项中不能出现中⽂)
#在mysql的解压⽬录下,新建my.ini,然后配置
1. 在执⾏mysqld命令时,下列配置会⽣效,即mysql服务启动时⽣效[mysqld]
;skip-grant-tablesport=3306
character_set_server=utf8default-storage-engine=innodbinnodb_file_per_table=1
#解压的⽬录
basedir=E:\\mysql-5.7.19-winx64#data⽬录
datadir=E:\\my_data #在mysqld --initialize时,就会将初始数据存⼊此处指定的⽬录,在初始化之后,启动mysql时,就会去这个⽬录⾥找数据
2. 针对客户端命令的全局配置,当mysql客户端命令执⾏时,下列配置⽣效[client]port=3306
default-character-set=utf8user=root
password=123
3. 只针对mysql这个客户端的配置,2中的是全局配置,⽽此处的则是只针对mysql这个命令的局部配置[mysql];port=3306
;default-character-set=utf8user=egon
password=4573
如果没有[mysql],则⽤户在执⾏mysql命令时的配置以[client]为准
View Code
mysql统⼀字符编码
1. 修改配置⽂件[mysqld]
default-character-set=utf8 [client]
default-character-set=utf8 [mysql]
default-character-set=utf8
#mysql5.5以上:修改⽅式有所改动[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci[client]
default-character-set=utf8[mysql]
default-character-set=utf82. 重启服务
3. 查看修改结果:\\s
show variables like '%char%'
View Code
因篇幅问题不能全部显示,请点此查看更多更全内容