Mysql使用
1、卸载系统自带的 mariadb-lib
[root@centos-linux ~]# rpm -qa|grep mariadb
mariadb-libs-5.5.44-2.el7.centos.x86_64
[root@centos-linux ~]# rpm -e mariadb-libs-5.5.44-
2.el7.centos.x86_64 --nodeps
2、下载mysql5.7.16 rpm安装包
官网最新的mysql安装包是 mysql-5.7.16-1.el7.x86_64.rpm-bundle.tar下
载地址
[root@centos-linux ~]# wget
http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.16-
1.el7.x86_64.rpm-bundle.tar
然后解压
[root@linux_node_1 src]# tar -xvf mysql-5.7.16-1.el7.x86_64.rpm-
bundle.tar
mysql-community-libs-compat-5.7.16-1.el7.x86_64.rpm
mysql-community-devel-5.7.16-1.el7.x86_64.rpm
mysql-community-minimal-debuginfo-5.7.16-1.el7.x86_64.rpm
mysql-community-libs-5.7.16-1.el7.x86_64.rpm
mysql-community-common-5.7.16-1.el7.x86_64.rpm
mysql-community-embedded-compat-5.7.16-1.el7.x86_64.rpm
mysql-community-test-5.7.16-1.el7.x86_64.rpm
mysql-community-embedded-devel-5.7.16-1.el7.x86_64.rpm
mysql-community-server-minimal-5.7.16-1.el7.x86_64.rpm
mysql-community-server-5.7.16-1.el7.x86_64.rpm
该文档是极速PDF编辑器生成,
如果想去掉该提示,请访问并下载:
http://www.jisupdfeditor.com/
mysql-community-client-5.7.16-1.el7.x86_64.rpm
mysql-community-embedded-5.7.16-1.el7.x86_64.rpm
3、安装
依次执行(几个包有依赖关系,所以执行有先后)下面命令安装
[root@centos-linux ~]# rpm -ivh mysql-community-common-5.7.16-
1.el7.x86_64.rpm
[root@centos-linux ~]# rpm -ivh mysql-community-libs-5.7.16-
1.el7.x86_64.rpm
[root@centos-linux ~]# rpm -ivh mysql-community-client-5.7.16-
1.el7.x86_64.rpm
[root@centos-linux ~]# rpm -ivh mysql-community-server-5.7.16-
1.el7.x86_64.rpm
在安装rpm -ivh mysql-community-server-5.7.16-1.el7.x86_64.rpm的时
候报错如下:
/usr/bin/perl is needed by MySQL-server-...
安装下面这个依赖
yum install -y perl-Module-Install.noarch
[root@linux_node_1 src]# rpm -ivh mysql-community-server-5.7.16-
1.el7.x86_64.rpm
warning: mysql-community-server-5.7.16-1.el7.x86_64.rpm: Header
V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
error: Failed dependencies:
libaio.so.1()(64bit) is needed by mysql-community-server-5.7.16-
1.el7.x86_64
libaio.so.1(LIBAIO_0.1)(64bit) is needed by mysql-community-server-
5.7.16-1.el7.x86_64
libaio.so.1(LIBAIO_0.4)(64bit) is needed by mysql-community-server-
5.7.16-1.el7.x86_64
net-tools is needed by mysql-community-server-5.7.16-1.el7.x86_64
这个报错的意思是需要安装libaio包和net-tools包:可以yum安装一下,
安装 libaio-0.3.107-10.el6.x86_64.rpm,下载地址:
wget http://mirror.centos.org/centos/6/os/x86_64/Packages/libaio-
0.3.107-10.el6.x86_64.rpm
然后yum安装net-tools yum install net-tools 完成之后就可以顺利安装
4、数据库初始化
为了保证数据库目录为与文件的所有者为 mysql 登陆用户,如果你是以
root 身份运行 mysql 服务,需要执行下面的命令初始化
mysqld --initialize --user=mysql
如果是以 mysql 身份运行,则可以去掉 --user 选项。
另外 --initialize 选项默认以“安全”模式来初始化,则会为 root 用户生成
一个密码并将该密码标记为过期,登陆后你需要设置一个新的密码,而使
用 --initialize-insecure 命令则不使用安全模式,则不会为 root 用户生成一
个密码。 这里演示使用的 --initialize 初始化的,会生成一个 root 账户密
码,密码在log文件里,红色区域的就是自动生成的密码 。
5、启动
systemctl start mysqld.service
查看状态:
systemctl status mysqld.service
6、置默认编码为utf8
修改/etc/my.cnf配置文件,在[mysqld]下添加编码配置,如下所示:
[mysqld]
character_set_server=utf8
init_connect='SET NAMES utf8'
同时修改数据库大小写不敏感设置
lower_case_table_names = 1
若要解决sql_mode=only_full_group_by问题,则还需增加如下:
sql_mode = ‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,
ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’
配置后,需要重启才能生效
7、 查看本地数据库用户root初始密码
cat /var/log/mysqld.log 或 grep "password"
/var/log/mysqld.log
8、使用指定用户登录本地数据库
mysql -uroot -p 输入初始密码,此时不能做任何事情,因为MySQL默认
必须修改密码之后才能操作数据库
9、修改数据库用户密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
或者
set password for 'root'@'localhost'=password('new password');
这里有个问题,新密码设置的时候如果设置的过于简单会报错:
原 因 是 因 为 MySQL 有 密 码 设 置 的 规 范 , 具 体 是 与
validate_password_policy的值有关:
MySQL完整的初始密码规则可以通过如下命令查看:
mysql> SHOW VARIABLES LIKE 'validate_password%';
+++
| Variable_name | Value |
+++
| validate_password_check_user_name | ON |
| validate_password_dictionary_file | |
| validate_password_length | 8 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | LOW |
| validate_password_special_char_count | 1 |
+++
rows in set (0.01 sec)
通过一下命令可以修改数据库用户的密码长度和策略:
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;
10、创建数据库用户
创建本地用户
CREATE USER 'test_admin'@'localhost' IDENTIFIED BY
'admin123_S';
创建允许指定ip登录的远程用户
CREATE USER 'test_admin2'@'192.168.2.71' IDENTIFIED BY
'admin123_S';
创建无固定ip限制的远程数据库用户
CREATE USER 'test_admin3'@'%' IDENTIFIED BY 'admin123_S';
11、赋权限
该文档是极速PDF编辑器生成,
如果想去掉该提示,请访问并下载:
http://www.jisupdfeditor.com/
授权需要以本地root用户身份给其他用户授权
GRANT SELECT ON mysql.tablename TO
'test_admin2'@'192.168.2.71'; (给指定ip的远程用户,赋予mysql这个
数据库的所有表名查询权限)
GRANT DELETE ON mysql.* TO 'test_admin3'@'%';
GRANT ALL ON mysql.* TO 'test_admin4'@'%'; (授于 mysql数据库
的 全部权限)
GRANT ALL ON * .* TO 'test_admin4'@'%'; (授于全部权限)
flush privileges; (刷新权限)
REVOKE SELECT ON mysql.* FROM 'test_admin4'@'%';(撤销权限)
SHOW GRANTS FOR 'username'@'host';(查看用户权限)
drop user 'username'@'host';(删除数据库账号)
创建数据库:
CREATE DATABASE db_name DEFAULT CHARACTER SET utf8
COLLATE utf8_general_ci;
使用指定用户,指定ip,指定端口连接数据库:
mysql -ufreedom -p -h 172.18.221.235 -P3306
12、查询数据库占用空间
select TABLE_SCHEMA,
concat(truncate(sum(data_length)/1024/1024,2),' MB') as data_size,
concat(truncate(sum(index_length)/1024/1024,2),' MB') as index_size
from information_schema.tables
group by TABLE_SCHEMA
order by data_length desc;
13、查询数据库里所有表占用空间
该文档是极速PDF编辑器生成,
如果想去掉该提示,请访问并下载:
http://www.jisupdfeditor.com/
select TABLE_NAME, concat(truncate(data_length/1024/1024,2),' MB')
as data_size, concat(truncate(index_length/1024/1024,2),' MB') as
index_size
from information_schema.tables where TABLE_SCHEMA =
'vmcsvr_global'
group by TABLE_NAME
order by data_length desc;
14、查询数据库里所有表详细使用空间情况
SELECT CONCAT(table_schema,'.',table_name) AS 'Table Name',
CONCAT(ROUND(table_rows/1000000,4),'M') AS 'Number of Rows',
CONCAT(ROUND(data_length/(1024*1024*1024),4),'G') AS 'Data
Size',
CONCAT(ROUND(index_length/(1024*1024*1024),4),'G') AS 'Index
Size',
CONCAT(ROUND((data_length+index_length)/(1024*1024*1024),4),'G')
AS 'Total' FROM information_schema.TABLES
WHERE table_schema LIKE 'vmcsvr_global';