首页 > 数据库 > MySQL > 正文

在CU上整理的MySQL的常见问题及解答

2024-07-24 12:55:06
字体:
来源:转载
供稿:网友
  • q: 如何使用rpm方式安装mysql

    a:首先下载合适的rpm包,例如下载了文件 mysql-5.0.15-0.i386.rpm

    用一下方法安装:

    #rpm -ivhu mysql-5.0.15-0.i386.rpm

    通常情况下,安装完这个rpm包后,只具备有mysqld服务功能,其它相关的client程序和开发包还需要另外安装

    #rpm -ivhu mysql-devel-5.0.15-0.i386.rpm

    #rpm -ivhu mysql-client-5.0.15-0.i386.rpm

    q: 如何安装已经编译好了的mysql二进制包

    a:首先下载合适的二进制包,例如下载了文件 mysql-standard-4.1.13-pc-linux-gnu-i686.tar.gz

    #groupadd mysql

    #useradd -g mysql mysql

    #cd /usr/local

    #tar zxf mysql-standard-4.1.13-pc-linux-gnu-i686.tar.gz

    #ln -s mysql-standard-4.1.13-pc-linux-gnu-i686 mysql

    #cd mysql

    #scripts/mysql_install_db --user=mysql

    #chgrp -r mysql *

    #bin/mysqld_safe --user=mysql &

    有什么个性化的配置,可以通过创建 /etc/my.cnf 或者 /usr/local/mysql/data/my.cnf,增加相关的参数来实现。

    q: 如何自己编译mysql

    a:以redhat linux 9.0为例:

    下载文件 mysql-4.1.13.tar.gz

    #tar zxf mysql-4.1.13.tar.gz

    #cd mysql-4.1.13

    #./configure --prefix=/usr/local/mysql --enable-assembler /

    --with-mysqld-ldflags=-all-static --localstatedir=/usr/local/mysql/data /

    --with-unix-socket-path=/tmp/mysql.sock --enable-assembler /

    --with-charset=complex --with-low-memory --with-mit-threads

    #make

    #make install

    #groupadd mysql

    #useradd -g mysql mysql

    #chgrp -r mysql /usr/local/mysql/

    #/usr/local/mysql/bin/mysqld_safe --user=mysql &

    有什么个性化的配置,可以通过创建 /etc/my.cnf 或者 /usr/local/mysql/data/my.cnf,增加相关的参数来实现。

    q: 如何登录mysql

    a:使用mysql提供的客户端工具登录

    #path_to_mysql/bin/mysql -uuser -ppassword dateabase

    q: 忘记mysql的root密码,怎么修改

    a:如果 mysql 正在运行,首先杀之: killall -term mysqld。

    启动 mysql :path_to_mysql/bin/mysqld --skip-grant-tables &

    就可以不需要密码就进入 mysql 了。

    然后就是

    mysql>use mysql

    mysql>update user set password=password("new_pass") where user="root";

    mysql>flush privileges;

    重新杀 mysql ,用正常方法启动 mysql

    一定注意:很多新手没有用password=password("..."),而是直接password="..."所以改掉密码不好使

    q: 为什么mysqld起来了,却无法登录,提示"/var/lib/mysql/mysql.sock"不存在

    a:这种情况大多数是因为你的mysql是使用rpm方式安装的,它会自动寻找 /var/lib/mysql/mysql.sock 这个文件,

    通过unix socket登录mysql。

    常见解决办法如下:

    1、

    创建/修改文件 /etc/my.cnf,至少增加/修改一行

    [mysql]

    [client]

    socket = /tmp/mysql.sock

    #在这里写上你的mysql.sock的正确位置,通常不是在 /tmp/ 下就是在 /var/lib/mysql/ 下

    2、

    指定ip地址,使用tcp方式连接mysql,而不使用本地sock方式

    #mysql -h127.0.0.1 -uuser -ppassword

    3、

    为 mysql.sock 加个连接,比如说实际的mysql.sock在 /tmp/ 下,则

    #ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock即可

    q: 如何修改mysql用户密码

    a:大致有2种方法:

    1、

    mysql>mysql -uroot -pxxx mysql

    mysql>update user set password=password('new_password') where user='user';;

    mysql>flush privileges;

    2、

    格式:mysqladmin -u用户名 -p旧密码 password 新密码

    #mysqladmin -uroot -password ab12

    注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。

    q: 如何新增一个mysql用户

    a:格式:grant select on 数据库.* to 用户名@登录主机 identified by "密码"

    例1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入mysql,然后键入以下命令:

    mysql>grant select,insert,update,delete on *.* to [email protected]"%" identified by "abc";

    但例1增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了,解决办法见例2。

    例2、增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即mysql数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库,只能通过mysql主机上的web页来访问了。

    mysql>grant select,insert,update,delete on mydb.* to [email protected] identified by "abc";

    如果你不想test2有密码,可以再打一个命令将密码消掉。

    mysql>grant select,insert,update,delete on mydb.* to [email protected] identified by "";

    另外,也可以通过直接往user表中插入新纪录的方式来实现。

    q: 如何查看mysql有什么数据库

    a:mysql>show databases;

    q: 如何查看数据库下有什么表

    a:mysql>show tables;

    q: 如何导出数据

    a:有几种方法,如下:

    1、使用mysqldump

    #mysqldump -uuser -ppassword -b database --tables table1 --tables table2 > dump_data_20051206.sql

    详细的参数

    2、backup to语法

    mysql>backup table tbl_name[,tbl_name...] to '/path/to/backup/directory';

    详细请查看mysql手册

    3、mysqlhotcopy

    #mysqlhotcopy db_name [/path/to/new_directory]

    #mysqlhotcopy db_name_1 ... db_name_n /path/to/new_directory

    #mysqlhotcopy db_name./regex/

    详细请查看mysql手册

    4、select into outfile

    详细请查看mysql手册

    5、客户端命令行

    #mysql -uuser -ppassword -e "sql statements" database > result.txt

    以上各种方法中,以mysqldump最常用

    q: 如何在命令行上执行sql语句

    a:#mysql -uuser -ppassword -e "sql statements" database

    q: 如何导入备份出来的文件

    a:常见几种方法如下:

    1、由mysqldump出来的文件

    #mysql -uuser -ppassword [database] < dump.sql

    2、文件类型同上,使用source语法

    mysql>source /path_to_file/dump.sql;

    3、按照一定格式存储的文本文件或csv等文件

    #mysqlimport [options] database file1 [file2....]

    详细请查看mysql手册

    4、文件类型同上,也可以使用load data语法导入

    详细请查看mysql手册

  • 发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表