当前位置 : 主页 > 手机开发 > harmonyos >

MySQL 使用基础

来源:互联网 收集:自由互联 发布时间:2023-10-08
安装 MySQL 注:以 Ubuntu 12.04 LTS 为例 安装 MySQL 服务器: ~$ sudo apt-get install mysql-server 只安装 MySQL 客户端: ~$ sudo apt-get install mysql-client 修改 root 密码 $ mysqladmin -u root -p password new_passwdEn


安装 MySQL

注:以 Ubuntu 12.04 LTS 为例

安装 MySQL 服务器:

~$ sudo apt-get install mysql-server



只安装 MySQL 客户端:

~$ sudo apt-get install mysql-client


修改 root 密码

$ mysqladmin -u root -p password <new_passwd>
Enter password:<old_passwd>


启动或关闭 MySQL

$ sudo service mysqld start|stop
$ sudo /etc/rc.d/init.d/mysqld start|stop


查看 MySQL 版本

2.2 Determining Your Current MySQL Version

登陆时会有版本信息显示

$ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 50
Server version: 5.5.37-0ubuntu0.12.04.1 (Ubuntu)



mysql> SHOW VARIABLES LIKE "%version%";



mysql> STATUS;



注意:

mysql --version(-V) 这种方法是错误的,因为这是查看 mysql 这个程序的版本,而非 MySQL server(mysqld) 的版本。


查看所有用户

mysql> SELECT User,Host,Password FROM user;
+------------------+----------------------+-------------------------------------------+
| User             | Host                 | Password                                  |
+------------------+----------------------+-------------------------------------------+
| root             | localhost            | *15943532B0D808E5C8710C3C76D9FB509BC41666 |
| root             | controller.openstack | *15943532B0D808E5C8710C3C76D9FB509BC41666 |
| root             | 127.0.0.1            | *15943532B0D808E5C8710C3C76D9FB509BC41666 |
| root             | ::1                  | *15943532B0D808E5C8710C3C76D9FB509BC41666 |
| debian-sys-maint | localhost            | *48EAED3CA6FCD5B1672404BBC7FEC70C8F911856 |
| keystone         | %                    | *AD5CC56971C9CD6CB2822CEE3608405EF7A791E6 |
| keystone         | localhost            | *AD5CC56971C9CD6CB2822CEE3608405EF7A791E6 |
+------------------+----------------------+-------------------------------------------+
7 rows in set (0.00 sec)



连接 MySQL server

--host=host_name, -h host_name
--port=port_num, -P port_num
--user=user_name, -u user_name
--database=db_name, -D db_name
--password[=password], -p[password]



MySQL server 所在服务器:controller.openstack 192.168.0.11

另一装有 mysql 客户端的主机:compute.openstack 192.168.0.12

能匹配到 mysql.user 中记录的 '<user>'@'<host>' 组合才能成功连接

例一:本地登陆

~$ mysql -u root -h 192.168.0.11 -p        
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'192.168.0.11' (using password: YES)

'root'@'192.168.0.11' 不存在,所以连接失败


例二:远程登陆,在 192.168.0.12 中登陆

~$ mysql -u keystone -h controller.openstack -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
......

这种方式连接时, MySQL server 识别的组合是 'keystone'@'compute.openstack', 它匹配 'keystone'@'%' 组合



解决:以允许 root 远程和用 ip 本地登陆为例

mysql> GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY '<password_for_root>';


这里涉及到 MySQL 的权限管理,了解更多,参见 

6.2 The MySQL Access Privilege System



phpMyAdmin 修改数据库登录用户名和密码

phpMyAdmin 安装目录下的 config.inc.php:

$cfg['Servers'][$i]['user'] = '<db_user>';
$cfg['Servers'][$i]['password'] = '<passwd>';



创建用户、授权、删除用户、回收权限

首先要理解 MySQL “用户”的概念,用户并非单纯的 mysql.user 里的 User 列,完整的用户概念应该是 '<user>'@'<host>'.

创建用户、删除用户:

CREATE USER 'test'@'%' IDENTIFIED BY 'testpw';
DROP USER 'test'@'%';



授权:

GRANT ALL ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'hwx@keystone';

如果 keystone 用户不存在,这条语句会创建用户。


回收权限:

回收权限最好不要用 REVOKE, 因为它不会删除相关表中的记录(如 mysql.user, mysql,db),用 DELETE 有不能保证清理干净,所以用 DROP USER:

DROP USER 'keystone'@'localhost';


更多参见:

13.7.1. Account Management Statements

6.2 The MySQL Access Privilege System


导出整个库结构


mysqldump --no-data <db> [table1 table2 ...] -h <host> -u <user> -p >/tmp/dump.sql
sed -i 's/CREATE TABLE/CREATE TABLE IF NOT EXISTS/g' /tmp/dump.sql


--no-data: 只导出结构,不导出数据



--databases: 同时指定多个 db, 而且会生成 "CREATE DATABASE"  和 "USE" 语句




执行整个 sql 文件


mysql -h <host> -u <user> -p </tmp/dump.sql



查看建表建库语句


SHOW CREATE DATABASE `<db>`\G
SHOW CREATE TABLE `<db>`\G




查看表使用的存储引擎


SHOW TABLE STATUS FROM <db> where Name=<table>;

其中 "Engine" 字段就是存储引擎,需要注意的是通过 "SHOW CREATE TABLE" 查到的可能会不准确(

查看mysql当前表使用的存储引擎)。



将某值为时间戳的字段转换为可读格式

FROM_UNIXTIME(field)


查看 MySQL 服务器当前默认字符集和指定数据库的字符集


查看 MySQL 服务器当前默认字符集:


mysql> SHOW VARIABLES LIKE 'character_set_server';
mysql> SHOW VARIABLES LIKE 'collation_server';



查看指定数据库的字符集:


mysql> use somedb
mysql> SHOW VARIABLES LIKE 'character_set_database';
mysql> SHOW VARIABLES LIKE 'collation_database';




使用事务


mysql_query("START TRANSACTION");   // mysql_query("BEGIN");
$res1 = mysql_query("<SQL1>");
$res2 = mysql_query("<SQL2>");
if($res1 && $res2)
{
    mysql_query("COMMIT");
}
else
{
    mysql_query("ROLLBACK");
}







上一篇:fork()引起的printf()输出多次的问题
下一篇:没有了
网友评论