文章目录
1. MySQL简介
MySQL 是一个开源的,可以定制的关系型数据库管理系统。它采用了 GPL 协议,你可以修改源码来开发自己的MySQL系统。 MySQL可以运行于多个系统上,并且支持多种语言,这些编程语言包括 C、C++、Python、Java、Perl、PHP、 Eiffel、Ruby 等。
MySQL 还支持大型数据库,支持 5000 万条记录的数据仓库,32 位系统表文件最大可支持 4GB,64 位系统支持最大的表文件为 8TB。
2. 在Linux中安装MySQL
(1)检查是否安装过MySQL
在CentOS7的环境下,使用命令:
rpm -e --nodeps mariadb-libs
rpm -qa|grep mariadb
默认 Linux(CentOS7)在安装的时候,自带了 mariadb(mysql 完全开源版本)相关的组件。 需要先执行卸载命令rpm -e --nodeps mariadb-libs
,卸载系统自带的 mariadb。
(2)下载安装包
进入官网:https://dev.mysql.com/downloads/mysql/,下载MySQL安装包,将下载好的RPM安装包拷贝到opt目录下。
(3)执行安装
在安装目录下执行 rpm 命令安装
yum -y install libc.so.6
yum -y install libncurses.so.5
yum -y install libaio.so.1
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
需要先使用yum -y install
命令安装缺失的依赖,如使用 yum -y install libc.so.6
命令下载libc.so.6。
否则会出现如下错误:
(4)检查是否安装成功
检查是否安装成功的命令:
/usr/bin/mysqladmin --version
或者
rpm -qa|grep MySQL
3. MySQL服务
3.1 常用命令
(1) 查看服务状态
service mysql status
(2)启动服务
service mysql start
启动命令后,MySQL服务是开机自动启动的!
(3)停止服务
service mysql stop
(4)重启服务
service mysql restart
(5)查看MySQL进程
ps -ef|grep mysqld
相关参数的说明:
(6)初始化root用户的密码
/usr/bin/mysqladmin -u root password "000000"
3.2 服务重复启动问题
因多次启动MySQL服务,造成多个MySQL进程问题,此时尝试去登录或者操作则会报错:
MySQL服务状态失败
解决办法是杀死所有和MySQL进程相关的进程,然后重启服务
注意是mysqld,d表示daemon,即守护进程。
4. 修改字符集
查看MySQL默认的编码字符集:
show variables like '%char%';
如果在建库建表的时候,没有明确指定字符集,则采用默认的字符集lantin1,这样就会导致插入的中文字符出现乱码问题。
修改配置文件,在/usr/share/mysql/中找到my.cnf的配置文件,拷贝其中的my-huge.cnf到/etc/并命名为my.cnf。在配置文件对应的结点添加以下内容后再重启服务。
cp /usr/share/mysql/my-huge.cnf /etc//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
重启MySQL服务
service mysql restart
重启MySQL服务后,再次查看默认编码字符集
(1)修改已创建库、表字符集修改数据库的字符集
mysql>alterdatabasemydbcharacterset'utf8';
修改数据表的字符集
mysql>altertablemytblconverttocharacterset'utf8'
(2)对于已经乱码数据无论是修改mysql配置文件或是修改库、表字符集,都无法改变已经变成乱码的数据。只能删除数据重新插入或更新数据才可以完全解决
5. 设置大小写是否敏感
查看大小写是否敏感的命令:
showvariableslike'%lower_case_table_names%';
Windows系统默认大小写不敏感,但是Linux系统是大小写敏感的,value值的定义如下:
如果设置大小写不敏感,就在my.cnf这个配置文件[mysqld]中加入lower_case_table_names=1,然后重启服务器即可。
再次查看
6. SQL_MODE
sql_mode定义了对Mysql中sql语句语法的校验规则!sql_mode是个很容易被忽视的变量,默认值是空值,在这种设置下是可以允许一些非法操作的,比如允许一些非法数据的插入。
在生产环境必须将这个值设置为严格模式,所以开发、测试环境的数据库也必须要设置,这样在开发测试阶段就可以发现问题
6.1 常用的值
6.2 查看和修改
查看当前的sql_mode:
select @@sql_mode;
临时修改sql_mode:
set @@sql_mode=’’;
永久修改,需要在配置文件my.cnf中修改[mysqld]下添加sql_mode=‘’:
7. MySQL的用户管理
7.1 相关命令
MySQL的用户管理的常用命令如下:
7.2 用户表
查看当前的用户表,执行命令:
select host,user,password,select_priv,insert_priv,drop_priv,update_priv,delete_priv from mysql.user;
- host:表示连接类型
- % 表示所有远程通过 TCP 方式的连接 IP 地址 如 (192.168.1.2,127.0.0.1) 通过制定 ip 地址进行的 TCP 方式的连接
- 机器名 表示通过指定网络中的机器名进行的 TCP 方式的连接
- ::1 表示IPv6 的本地 ip 地址 等同于 IPv4 的 127.0.0.1
- localhost 表示本地方式通过命令行方式的连接 ,比如
mysql -u xxx -p
方式的连接。
- user:用户名,同一用户通过不同方式链接的权限是不一样的。
- password:密码
- select_priv,insert_priv,drop_priv,update_priv等:用户拥有的权限
7.3 开启远程连接
修改已有用户的host字段,修改mysql的user表,host字段为指定ip即可。如果想任意主机都可以连接,可以使用%。
update mysql.user set host = '%' where user = 'root';
修改表后并不会立即生效,需要执行以下sql使用修改生效。
flush privileges;
8. MySQL的权限管理
8.1 授予权限
新建远程连接用户
grant all on *.* to admin@'%' identified by '123' with grant option;