对于线上要使用的mysql 最好使用源码编译安装 因为那样我们对这个工具知根知底 但对于要求不高的开发测试环境或者要基于mysql的工具来说 简单的安装方式就更高了。 当然,二进制方式安装是最快速的 但是 我们需要包以及一些讨厌的依赖关系。所以用yum这是简单粗暴的办法是最好不过了。
以下都是一些实用的的mysql安装,修改默认路径,基础命令等,已经模块化。读者们可以直接在页面查询需要的模块。
简单de目录:
- mysql安装(centos7.4)
- centos下简单的设置(密码,允许远程登陆和几个常见报错)
- redis安装(centos和ubuntu)
- ubuntu安装mysql
- ubuntu下简单的设置
- MySql查看数据库中所有表的创建时间等信息
- Mysql 复制表结构包括索引
1,mysql安装:
系统:centos 7.4:
在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB。
1 下载并安装MySQL官方的 Yum Repository
[root@localhost ~]# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
使用上面的命令就直接下载了安装用的Yum Repository,大概25KB的样子,然后就可以直接yum安装了。
[root@localhost ~]# yum -y install mysql57-community-release-el7-10.noarch.rpm
之后就开始安装MySQL服务器。
[root@localhost ~]# yum -y install mysql-community-server
这步可能会花些时间,安装完成后就会覆盖掉之前的mariadb。
至此MySQL就安装完成了,然后是对MySQL的一些设置。
2,设置
然后5.7是默认有密码的 不喜欢去找 直接跳过自己设置:
修改/etc/my.cnf
vim /etc/my.cnf
配置文件最后一行添加skip-grant-tables
保存后重启mysql:systemctl restart mysqld即可免密登录
然后直接mysql -uroot(不要加p)
mysql>use mysql;
mysql> update mysql.user set authentication_string=password('*******') where user='root';mysql> flush privileges;
修改完成后输入exit退出,重新回到/etc/my.cnf该文件删除之前添加语句即可完成
报错:如果修改密码之后 登录mysql后提示这个:
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> use mysql;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
修改密码即可:
SET PASSWORD = PASSWORD('***************'); (密码必须要大写字母+数字+特殊符号)
错误:ERROR 1130: Host '192.168.1.3' is not allowed to connect to thisMySQL serve
错误1130:主机192.168.1.3”不允许连接到thismysql服务
原因:被连接的数据不允许使用 192.168.1.3访问,只允许是用 localhost;
解决办法:
可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改"mysql" 数据库里的 "user" 表里的 "host"项,从"localhost"改称"%"
1、启用 cmd
输入 : mysql -u -root -p
若是提示 ‘mysql’不是内部或外部命令,也不是可运行的程序.那需要配置环境变量 在配置 path 变量添加 “……\mysq\/MYSQL Server5.7\bin”
总体运行语句:
mysql -u root -p
mysql>use mysql;
mysql>select 'host' from user where user='root';
mysql>update user set host = '%' where user ='root';
mysql>flush privileges;
mysql>select 'host' from user where user='root';
运行完毕后再次连接测试,若还不行重启mysql服务,或是直接重启电脑
3,redis安装(centos和ubuntu)
安装redis也是如此:(centos)
$ yum -y install redis
$ systemctl start redisUbuntu:
$ apt-get install redis-server
$ /etc/init.d/redis-server start
4,ubuntu安装mysql
ubuntu系统解决方案:
1、安装Mysql
sudo apt-get install mysql-server
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev
2、设置root密码
use mysql
update user set plugin='mysql_native_password' where user='root'; (不要修改)
update user set authentication_string=password('123456') where user='root'; (123456可以更改为自己的密码)
flush privileges;
3、配置远程访问
注释掉在/etc/mysql/mysql.conf.d/mysqld.cnf里面的bind-address = 127.0.0.1
连接mysql数据库,修改user表
grant all on *.* to 'root'@'%' identified by '123456' with grant option;
flush privileges;
5,简单的设置
ubuntu下修改mysql默认data路径
由于ubuntu默认的mysql路径是在/var/lib/mysql下,很多时候我们如果没有挂载其它分区在/var的时候,随着网站逐渐浏览和添加内容,数据容量也会越来越大,自然磁盘空间也会比较吃紧。因此我们就需要把mysql的data路径转移到其它目录下。
设置新data路径(假设新路径为/data/mysql)这里需要说明的就是,最开始我图省事使用了mv来移动,随后发现在设置完路径后mysql无法访问。因此为了保险起见还是按照这里的步骤来吧。
建立新的路径
sudo mkdir -p /mnt/mysql
复制数据
sudo cp -a /var/lib/mysql/* /mnt/mysql
修改文件夹权限
sudo chown -R mysql:mysql /mnt/mysql
修改配置文件
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
查找并用#注释以下
datadir = /var/lib/mysql
新增
datadir = /mnt/mysql
需要提醒的是:单只修改mysql的config文件是不够的,在你重启mysql服务的时候会发现启动失败。原因则是ubuntu里有一个访问控制系统apparmor,因此我们还需要在这里修改一下才能完全成功。
修改安全保护文件
sudo vim /etc/apparmor.d/usr.sbin.mysqld
查找并用#注释以下两节
/var/lib/mysql r,
/var/lib/mysql/** rwk,
新增
/mnt/mysql/ r,
/mnt/mysql/** rwk,
修改访问控制文件
sudo vim /etc/apparmor.d/abstractions/mysql
注释掉
/var/lib/mysql{,d}/mysql{,d}.sock rw,
新增
/mnt/mysql{,d}/mysql{,d}.sock rw,
重启服务(必须重启才能生效对apparmor的修改)
/etc/init.d/apparmor restart
/etc/init.d/mysql restart
这时候再访问就会发现已经修改成功了,数据的读写都经由新路径实现。
可以进入数据库输入:
SHOW GLOBAL VARIABLES LIKE 'datadir';查看一下
6,MySql查看数据库中所有表的创建时间等信息:
(1)show table status;该方法不会按创建时间排序
(2)SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '数据库名' ORDER BY create_time DESC;
7, Mysql 复制表结构包括索引
复制表结构:
CREATE TABLE 新表名 LIKE SELECT * FROM 模板表名;或者:
create table 新表名 select * from 数据库.模板表名;(如果是其他数据库则前面增加数据库名即可)
但是这样创建的表结构一致,但是索引却没有。
如果需要索引:如下:CREATE TABLE 新表名 LIKE 模板表名;
这是复制表结构+索引