百年老站-2020
本站距百年老站还有98年。
Oracle 统计行数
SELECT COUNT(*) FROM tablename;
MySQL 5.7.19编译安装及简单配置方法
本文档讲述如何通过编译的方式安装MySQL5.7.19,并进行简单配置。需要服务器配置不低于2CPU,2G内存,20G硬盘,否则不一定能顺利安装。安装前需要cmake和boost两个组件,可在附件中下载。
mysql安装路径/usr/local,数据路径/mysql,root密码123456
下面进行依赖安装:
1,安装cmake
tar -xf cmake-3.5.2.tar.gz
cd cmake-3.5.2
./bootstrap
gmake
如果没有错误,将会是下面的提示:
gmake install
至此,cmake安装完成。
2,boost,安装时需指定路径(–prefix),默认路径能安装,但找不到。./b2 install安装时间很长。
tar -xf boost_1_59_0.tar.gz
cd boost_1_59_0
./bootstrap.sh –prefix=/usr/local/
如果没有错误,将会是下面的提示:
./b2 install
如果没有错误,将会是下面的提示:
3,安装依赖ncurses-devel,这里就用yum进行了。
yum install ncurses-devel -y
至此,依赖安装完成,下面开始mysql编译。
4,编译MySQL,但这里的编译是通过CMake而非configure进行的,指定boost的源码路径,这里很奇怪,必须先安装boost这里也要指定源码路径,否则失败。
参数说明:
-DCMAKE_INSTALL_PREFIX=安装路径
-DMYSQL_DATADIR=默认数据路径
-DSYSCONFDIR=配置文件路径
-DMYSQL_TCP_PORT=默认端口
-DMYSQL_UNIX_ADDR=socket路径
-DWITH_BOOST=boost源码路径
tar -xf mysql-boost-5.7.19.tar.gz
cd mysql-5.7.19
/usr/local/bin/cmake . -DCMAKE_INSTALL_PREFIX=/usr/mysql -DMYSQL_DATADIR=/mysql -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/mysql/mysql.sock -DENABLED_LOCAL_INFILE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_DEBUG=0 -DENABLE_PROFILING=1 -DWITH_BOOST=/root/lnmp/mysql/boost_1_59_0
如果没有错误,将会是下面的提示:
下面开始编译,编译过程较长。
make
如果没有错误,将会是下面的提示:
make install
如果没有错误,将会是下面的提示:
5,修改数据目录权限和复制启动脚本
useradd mysql
mkdir /mysql
chown -R mysql.mysql /mysql && chown -R mysql.mysql /usr/mysql
cp -a /usr/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
ln -s /usr/mysql/bin/mysql /usr/bin/mysql
chmod +x /usr/bin/mysql
6,初始化数据库,5.5版本后会自动生成过期的root密码,需配置跳过密码并修改为不过期。顺序:1,跳过验证;2,修改root密码;3,设置密码不过期。
cd /usr/mysql/bin
./mysqld –initialize –user=mysql
7,重置密码,并设置密码不过期。
在[mysqld]中增加下列字段,修改数据路径,并重启mysql
skip-grant-tables
如果没有错误,将会是下面的提示:
8,用空密码登录mysql。
9,修改root密码为不过期。
use mysql ;
update user set password_expired=’N’ where user=’root’;
10,修改密码,5.7已弃用passwd字段,UPDATE user SET password=PASSWORD(‘123456′) WHERE user=’root’;命令已无效,用下面的命令,另外,MySQL5.7默认无grant权限,所以要加with grant option参数。
update mysql.user set authentication_string=password(‘123456′) where user=’root’ and Host = ‘localhost’;
11,取消跳过密码认证,并重启数据库后配置可在网络登录的用户。mysql不允许在跳过密码时创建用户。
GRANT ALL PRIVILEGES ON . TO ‘root’@’%’IDENTIFIED BY ‘123456’ WITH GRANT OPTION;
未取消跳过密码时创建用户的错误提示。
12,配置mysql开机启动。
chkconfig mysqld on
至此mysql编译安装及简单配置完成。
Mysql查看数据量
任何查询均需进入information_schema数据库,命令
use information_schema;
1,查看总数据量
select concat(round(sum(data_length/1024/1024),2),’MB’) as data from tables;
2,查看某个数据库的数据量,此处为data数据库
select concat(round(sum(data_length/1024/1024),2),’MB’) as data from tables where table_schema=’data’;
3,查看某个表的数据量,此处为data数据库中的storage表
select concat(round(sum(data_length/1024/1024),2),’MB’) as data from tables where table_schema=’data’ and table_name=’storage’;
MySQL密码遗失处理方法
当前情况:已知linux root密码,mysql密码不知道,有程序运行不可更改root密码,想导出mysql的数据。
具体方法如下:
1,登录到服务器,修改mysql配置文件/etc/my.cnf,在[mysqld]段下增加skip-grant-tables,并重启mysql。
2,此时访问mysql不需要验证,使用mysql -uroot即可连接。
3,导出数据,这里以使用mysqldump导出data库到/mnt为例,linux命令为mysqldump -uroot data > /mnt/data.sql
4,导出数据后修改mysql配置文件/etc/my.cnf,删除或注释skip-grant-tables配置,并重启服务器,此时mysql恢复需要验证的状态。
这种方法涉及重启mysql,可能会造成程序运行异常。如果需要修改mysql密码,可在第2步后执行下列操作,序号接第2步:
3,进入mysql库,修改密码为123456,下面命令适用于5.7+版本。
use mysql;
update mysql.user set authentication_string=password(‘123456′) where user=’root’ and Host = ‘localhost’;
低于5.7版本可用下面命令:
use mysql;
UPDATE user SET password=PASSWORD(‘123456′) WHERE user=’root’;
4,导出数据后修改mysql配置文件/etc/my.cnf,删除或注释skip-grant-tables配置,并重启服务器,此时mysql恢复需要验证的状态。
ERROR-1862-(HY000):-Your-password-has-expired.To-log-in-you-must-change
1,修改/etc/my.cnf,将下面语句加入到[mysqld]字段下跳过验证并重启。
skip-grant-tables
2,进入到mysql库,修改密码过期选项。
use mysql;
update user set password_expired=’N’ where user=’root’;
3,将跳过密码改回,并重启MySQL。
MySQL主从复制配置
1,修改主库,开启bin-log,并设置server-id
[mysqld]
log-bin=mysql-bin #[必须]启用二进制日志
server-id=111 #[必须]服务器唯一ID
2,修改从库,并设置server-id
[mysqld]
log-bin=mysql-bin #[非必须]启用二进制日志
server-id=222 #[必须]服务器唯一ID
3,重启所有mysql
4,在主库上创建一用户,用于主从复制。
GRANT REPLICATION SLAVE ON . to ‘sync’@’localhost’ identified by ‘s93ejzTi7evTKtlGp3NH’;
flush privileges;
5,在主库上查看master状态,并记下File和Position,这两个值将作为主从复制的起始值。
show master status;
6,从库配置slave,master_log_file和master_log_pos分别对应上面查到的File和Postition
change master to master_host=’localhost’,
MASTER_PORT=3301,
master_user=’sync’,
master_password=’s93ejzTi7evTKtlGp3NH’,
master_log_file=’mysql-bin.000001′,
master_log_pos=337;
start slave;
7,从库查看主从状态,看到Slave_IO_Running和Slave_SQL_Running均为Yes,配置即完。其中有一个为No,则有问题。
show slave status;