linux ubuntu mysql编译安装

 

  机房mysql数据库几乎全部是用编译方式安装,要注意的是,你优化的项越多,编译过程就越长。以下是编译步骤,按下文一步步走,不会出任何差错。

安装之前,请解决和确认最根本的依赖关系:C环境

MYSQL 5 : 

tar zxvf mysql-5.1.44.tar.gz

cd mysql-5.1.44

./configure --prefix=/usr/local/mysql --sysconfdir=/etc --localstatedir=/var/lib/mysql --enable-thread-safe-client --enable-local-infile --with-extra-charsets=all --with-low-memory --without-server --enable-assembler --with-big-tables --with-readline --with-ssl --with-embedded-server --with-innodb  --with-charset=utf8 --with-extra-charsets=gb2312  --with-federated-storage-engine --with-plugins=innobase --without-debug  --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static

可能会出现的错误:

checking for termcap functions library... configure: error: No curses/termcap library found

解决方法:

ncurses-devel.***.rpm 包解决

或者去下载一个ncurses-5.6.tar.gz,
wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.6.tar.gz
tar zxvf ncurses-5.6.tar.gz
cd ncurses-5.6
./configure –prefix=/usr –with-shared –without-debug
make
make install clean

然后再重新编译Mysql进行安装。

make && make install

cp support-files/my-medium.cnf  /etc/my.cnf

这里介绍configure的几个参数

    --prefix=PREFIX                   //mysql的安装路径

    --sysconfdir=DIR                  //mysql的系统配置文件,也就是my.cnf

    --localedir=DIR                    //数据库存放位置

    --prefix=/opt/mysql 将MySQL安装到目录/opt/mysql下 
--with-charset=utf8 指定缺省字符集为utf8
--with-extra-charsets=all 将MySQL所有支持的字符集编译进来
--with-tcp-port=3306 指定此MySQL实例将监听TCP 3306端口
--with-unix-socket-path=/tmp/mysql.sock 指定UNIX socket文件的路径(为绝对路径)
--wih-mysqld-user=mysqld 指定用来运行MySQL守护进程的用户
--with-federated-storage-engine 支持federated存储引擎

--with-plugins=innobase  支持innobase数据库(5.1+,默认为空)

--without-debug \去除debug模式 
--with-extra-charsets=gb2312 \添加gb2312中文字符支持 
--enable-assembler \使用一些字符函数的汇编版本 
--without-isam \去掉isam表类型支持 现在很少用了 isam表是一种依赖平台的表 (5.0以前)
--without-innodb \去掉innodb表支持 innodb是一种支持事务处理的表,适合企业级应用 5.0以前)

--with-pthread \强制使用pthread库(posix线程库) 
--enable-thread-safe-client \以线程方式编译客户端 
--with-client-ldflags=-all-static \ 
--with-mysqld-ldflags=-all-static \以纯静态方式编译服务端和客户端 

优化编译:

1. -static  13% 
--with-client-ldflags=-all-static
--with-mysqld-ldflags=-all-static
静态链接提高13%性能

2. -pgcc 1%
 CFLAGS="-O3 -mpentiumpro -mstack-align-double" CXX=gcc \
CXXFLAGS="-O3 -mpentiumpro -mstack-align-double \
 -felide-constructors -fno-exceptions -fno-rtti"
如果是Inter处理器,使用pgcc提高 1%性能

3. Unix Socket  7.5%
 --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock
使用unix套接字链接提高 7.5%性能,所以在windows下mysql性能肯定不如unix下面

4. --enable-assembler 
允许使用汇编模式(优化性能)
 

如:./configure --prefix=/opt/aimcpro10/mysql-5.1.45  --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static --with-unix-socket-path=/opt/aimcpro10/mysql-5.1.45/mysql.sock
--enable-assembler --with-charset=utf8 --with-extra-charsets=gbk  --with-plugins=innobase,myisam

  安装完毕后,需要把MySQL 库加入系统,采用ldconfig 命令来实现:

echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf

ldconfig -v | grep libmysqlclient

   然后可以看到系统返回:

         libmysqlclient_r.so.16 -> libmysqlclient_r.so.16.0.0

  安装完以后要初始化数据库,当然你是升级的话不用做这步;

如果重新安装需要删除:/var/lib/mysql 中的内容。

/usr/local/mysql/bin/mysql_install_db

  建立 mysql 用户;

/usr/sbin/useradd -M -o -r -d /var/lib/mysql -s /bin/bash -c "MySQL Server" -u 27 mysql

设置权限;

chown -R mysql:mysql /var/lib/mysql

chmod 750 /var/lib/mysql

chown -R mysql:mysql /usr/local/mysql

chmod -R 750 /usr/local/mysql

  添加mysqld服务

ln -sv /usr/local/mysql/bin/* /usr/sbin/

cp support-files/mysql.server /etc/rc.d/init.d/mysqld

/******************/

(ubuntu)

cp support-files/mysql.server /var/run/mysqld

chmod 755 /var/run/mysqld

/*****************/

chmod 755 /etc/rc.d/init.d/mysqld

/sbin/chkconfig --add mysqld

/sbin/chkconfig mysqld on

  好了,至此mysql安装完毕,可以起动mysql服务

/etc/rc.d/init.d/mysqld start 或 service mysqld start

nohup mysql -uroot -pxxc602 dragon < /home/dragon-2011-02-25 &

挂起后台执行。

MySQL更改root密码的方法:

第一種︰

shell>

mysql -u root mysql mysql> UPDATE user SET Password=PASSWORD(’new_password’) WHERE user=’root’; mysql> FLUSH PRIVILEGES;

第二種︰使用 set password 語法

shell> mysql -u root mysql mysql> SET PASSWORD FOR root=PASSWORD(’new_password’);

第三種︰使用 mysqladmin命令

shell>mysqladmin -u root password new_password  

MYSQL导入导出:

导入MYSQL的脚本:

nohup mysql -uroot -pxxc602 dragon < /home/dragon-2011-02-25 > myout.file 2>&1 &.

备份MSYQL的脚本:
/usr/sbin/mysqldump dragon -uzycg -pCassandra100017 --skip-opt | gzip  > /home/zycg/data/DB_bk/dragon-`date +%F`.gz 

忘记Mysqlroot密码,处理方法

1 sudo killall -TERM mysqld

2 sudo mysqld_safe --skip-grant-tables &

3 不需密码进入mysql

mysql> update user set password = password('new_password') where user = 'root'(password 可以为null);
mysql> flush privileges;

4 重新杀Mysql,用正常方法启动Mysql

新建用户、为用户授权、删除用户、修改指定用户密码。

首先要声明一下:一般情况下,修改MySQL密码,授权,是需要有mysql里的root权限的。

注:本操作是在WIN命令提示符下,phpMyAdmin同样适用。
    用户:phplamp  用户数据库:phplampDB

1.新建用户。
//登录MYSQL
@>mysql -u root -p
@>密码
//创建用户
mysql> insert into mysql.user(Host,User,Password) values("localhost","phplamp",password("1234"));
//刷新系统权限表
mysql>flush privileges;
这样就创建了一个名为:phplamp  密码为:1234  的用户。
然后登录一下。

mysql>exit;
@>mysql -u phplamp -p
@>输入密码
mysql>登录成功

2.为用户授权。

//登录MYSQL(有ROOT权限)。我里我以ROOT身份登录.
@>mysql -u root -p
@>密码
//首先为用户创建一个数据库(phplampDB)
mysql>create database phplampDB;
//授权phplamp用户拥有phplamp数据库的所有权限。
>grant all privileges on phplampDB.* to phplamp@localhost identified by '1234';
//刷新系统权限表
mysql>flush privileges;
mysql>其它操作

/*
如果想指定部分权限给一用户,可以这样来写:
mysql>grant select,update on phplampDB.* to phplamp@localhost identified by '1234';
//刷新系统权限表。
mysql>flush privileges;
*/

3.删除用户。
@>mysql -u root -p
@>密码
mysql>DELETE FROM user WHERE User="phplamp" and Host="localhost";
mysql>flush privileges;
//删除用户的数据库
mysql>drop database phplampDB;

4.修改指定用户密码。
@>mysql -u root -p
@>密码
mysql>update mysql.user set password=password('新密码') where User="phplamp" and Host="localhost";
mysql>flush privileges;
 给root用户 远程访问192.168.0.82的权限。

mysql> grant all privileges on dragon.* to root@'192.168.0.82'identified by 'xxc602';

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

 grant all privileges on *.* to zycg@'192.168.0.%'identified by 'Cassandra100017';(内网地址)

grant all privileges on dragon.* to root@'%'identified by 'xxc602';  所有帐号授权。

查看MYSQL表记录的多少:

select table_name,data_length from information_schema.tables; 

SQL code

远程连接问题,大家可以参考:

1、MYSQL服务器上: 

2、比如: C:\>mysql-uroot-p Enter password:******Welcometo the MySQL monitor. Commandsend with ;

3、or \g. Your MySQL connection idis 2

4、Server version:5.1.22-rc-community-log MySQL Community Server (GPL) 

5、Type'help;' or '\h' for help. Type'\c' to clear the buffer. 

6、mysql> grant all privileges on *.* to 'yourname'@'%' identifiedby 'youpasswd'; Query OK,0 rows affected (0.05 sec) 

7、mysql> flushprivileges; 

8、Query OK,0 rows affected (0.06 sec) 

9、mysql> exitBye

10、 开启3306的方法:

11、 http://www.google.cn/search?hl=zh-CN&q=%E5%BC%80%E5%90%AF3306&meta=2、这里假设用SQLYog连接MYSQL服务器。 

12、客户端机器上: HOST ADDRESS:服务端IP地址USER NAMEyourname PASSWORD:yourpasswd PORTS3306DATABASES:可以留空。

你可能感兴趣的:(linux ubuntu mysql编译安装)